Windows UPnP APIs

2021-01-15 11:11

阅读:627

标签:col   devices   break   bre   sid   unknown   friend   vbscript   inter   

查找设备

#include 
#include 
#include #pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")

using namespace std;

int main()
{
    do
    {
        if (CoInitialize(NULL) != S_OK)
        {
            break;
        }
        IUPnPDeviceFinder *pDeviceFinder = NULL;
        if (CoCreateInstance(CLSID_UPnPDeviceFinder,
                             NULL,
                             CLSCTX_INPROC_SERVER,
                             IID_IUPnPDeviceFinder,
                             (void **)&pDeviceFinder) != S_OK)
        {
            break;
        }
        BSTR bstrSsdpAll = SysAllocString(L"ssdp:all");
        IUPnPDevices *pDevices = NULL;
        if (pDeviceFinder->FindByType(bstrSsdpAll, 0, &pDevices) != S_OK)
        {
            break;
        }
        SysFreeString(bstrSsdpAll);
        IEnumVARIANT *pEnumVar = NULL;
        if (pDevices->get__NewEnum((IUnknown **)&pEnumVar) != S_OK)
        {
            break;
        }
        if (((IUnknown *)pEnumVar)->QueryInterface(IID_IEnumVARIANT, (void **)&pEnumVar) != S_OK)
        {
            break;
        }
        VARIANT varCurDevice;
        VariantInit(&varCurDevice);
        pEnumVar->Reset();
        while (pEnumVar->Next(1, &varCurDevice, NULL) == S_OK)
        {
            IUPnPDevice *pDevice = NULL;
            IDispatch *pdispDevice = V_DISPATCH(&varCurDevice);
            if (pdispDevice->QueryInterface(IID_IUPnPDevice, (void **)&pDevice) != S_OK)
            {
                continue;
            }
            BSTR bstrName = NULL;
            BSTR bstrType = NULL;
            if (pDevice->get_FriendlyName(&bstrName) != S_OK)
            {
                continue;
            }
            pDevice->get_Type(&bstrType);
            wcout " " "\n";
            SysFreeString(bstrName);
            SysFreeString(bstrType);
        }
    } while (false);
    CoUninitialize();
}

 

Dim deviceFinder
Set deviceFinder = CreateObject("UPnP.UPnPDeviceFinder")
Dim devices
Set devices = deviceFinder.FindByType("ssdp:all", 0)
For Each device In devices
    WScript.Echo device.FriendlyName + " " + device.Type
Next

 

Windows UPnP APIs

标签:col   devices   break   bre   sid   unknown   friend   vbscript   inter   

原文地址:https://www.cnblogs.com/JebediahKerman/p/Windows_UPnP_APIs.html


评论


亲,登录后才可以留言!