Windows runtime 如何使用WRL在Win32控制台应用程序中激活IWiFiDirectDevice?
我想在Win32控制台应用程序中直接从Windows 10 SDK使用用于WiFi的WinRT API。我了解C++/CX(甚至在这方面取得了一些进展),但仍然希望在没有此扩展的情况下使其工作 我的问题是无法激活IWifiDirectDevice接口(从ABI::Windows::Devices::WiFiDirect)来访问提供GetDeviceSelector方法的IWifiDirectDeviceStaticsWindows runtime 如何使用WRL在Win32控制台应用程序中激活IWiFiDirectDevice?,windows-runtime,wifi-direct,wrl,Windows Runtime,Wifi Direct,Wrl,我想在Win32控制台应用程序中直接从Windows 10 SDK使用用于WiFi的WinRT API。我了解C++/CX(甚至在这方面取得了一些进展),但仍然希望在没有此扩展的情况下使其工作 我的问题是无法激活IWifiDirectDevice接口(从ABI::Windows::Devices::WiFiDirect)来访问提供GetDeviceSelector方法的IWifiDirectDeviceStatics HStringReference strDevice(RuntimeClass
HStringReference strDevice(RuntimeClass_Windows_Devices_WiFiDirect_WiFiDirectDevice);
ComPtr<IInspectable> insp;
hr = RoActivateInstance(strDevice.Get(), insp.GetAddressOf());
HStringReference标准设备(运行时类\u Windows\u设备\u WiFiDirect\u WiFiDirectDevice);
文书主任督察;
hr=RoActivateInstance(strDevice.Get(),insp.GetAddressOf());
这段代码的结果是E_NOTIMPL。在微软,他们使用工厂进行激活,但ABI::Windows::Devices::WiFiDirect命名空间没有工厂
值得一提的是,IWifiDirectAdvertisementPublisher在以我之前编写的方式激活时工作正常
那么如何从WRL激活IWifiDirectDevice?
Windows.Devices.WiFiDirect.WiFiDirectDevice
不是可激活的类。通过查看windows.devices.wifidirect.idl
,您可以看到这一点
您需要使用静态方法,例如:
HStringReference strDevice(RuntimeClass_Windows_Devices_WiFiDirect_WiFiDirectDevice);
ComPtr<IWiFiDirectDeviceStatics> wiFiDirectDeviceStatics;
hr = Windows::Foundation::GetActivationFactory(
strDevice.Get(),
&wiFiDirectDeviceStatics);
ComPtr<IWiFiDirectDevice> wiFiDirectDevice;
ComPtr<IAsyncOperation<WiFiDirectDevice*>> asyncOperation;
hr = wiFiDirectDeviceStatics->FromIdAsync(deviceId.Get(), &asyncOperation);
HStringReference标准设备(运行时类\u Windows\u设备\u WiFiDirect\u WiFiDirectDevice);
ComPtr wiFiDirectDeviceStatics;
hr=Windows::Foundation::GetActivationFactory(
strDevice.Get(),
&wiFiDirectDeviceStatics);
ComPtr-wiFiDirectDevice;
ComPtr异步操作;
hr=wiFiDirectDeviceStatics->FromIdAsync(deviceId.Get(),&asyncOperation);
考虑看一看非常不清楚的.(我指的是API),要初始化WiFiDirectDeviceStatic,我需要将其传递给GetActivationFactory。。。我想GetActivationFactory应该会产生一个工厂…@Yrchgrchh是的,这让人困惑。很抱歉GetActivationFactory实际上是GetStaticStuff,但是它的想法是,大多数时候你都会得到工厂,所以他们以大多数人使用它的目的命名它。