Как да активирам IWiFiDirectDevice в Win32 Console APP с помощта на WRL?

Искам да използвам WinRT API за WiFi Direct от Windows 10 SDK в Win32 Console Application. Знам за C++/CX (и дори постигнах известен напредък по този начин), но все пак искам да го накарам да работи без това разширение.

Проблемът ми е, че не мога да активирам интерфейса IWifiDirectDevice (от ABI::Windows::Devices::WiFiDirect) за достъп до IWifiDirectDeviceStatics, който предоставя метод GetDeviceSelector.

HStringReference strDevice(RuntimeClass_Windows_Devices_WiFiDirect_WiFiDirectDevice);

ComPtr<IInspectable> insp;
hr = RoActivateInstance(strDevice.Get(), insp.GetAddressOf());

Този код завършва с E_NOTIMPL като резултат. В примера на Microsoft те са използвали фабрики за активиране, но ABI::Windows: Пространството от имена :Devices::WiFiDirect няма фабрики.

Струва си да се спомене, че IWifiDirectAdvertisementPublisher работи добре, когато се активира по начина, по който писах преди.

И така, как да активирам IWifiDirectDevice от WRL?


person Yrchgrchh    schedule 17.09.2015    source източник


Отговори (1)


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);

Помислете дали да не разгледате пример за Wi-Fi Direct .

person kiewic    schedule 17.09.2015
comment
Това е толкова неясно (имам предвид API), за да стартирам WiFiDirectDeviceStatic, трябва да го предам на GetActivationFactory... Предполагах, че GetActivationFactory трябва да създаде фабрика... - person Yrchgrchh; 17.09.2015
comment
@Yrchgrchh Да, объркващо е. съжалявам GetActivationFactory наистина е GetStaticStuff, но идеята беше, че през повечето време получавате фабриката, така че те я кръстиха на това, за което повечето хора ще я използват. - person Raymond Chen; 17.09.2015