protected CpProxy(String aDomain, String aName, uint aVersion, ICpDevice aDevice)
{
IntPtr domain = InteropUtils.StringToHGlobalUtf8(aDomain);
IntPtr name = InteropUtils.StringToHGlobalUtf8(aName);
iHandle = CpProxyCreate(domain, name, aVersion, aDevice.Handle());
Marshal.FreeHGlobal(domain);
Marshal.FreeHGlobal(name);
IntPtr serviceHandle = CpProxyService(iHandle);
iService = new CpService(serviceHandle);
iGchProxy = GCHandle.Alloc(this);
iSubscriptionStatusLock = new Mutex();
}