zoukankan      html  css  js  c++  java
  • 寻找正在连接中的网络连接

    

    寻找正在连接中的网络连接,并开启网络连接的网络连接共享功能。

    注意:要设置为管理员权限启动project。

    否则EnableSharing会失败。

    #include <Windows.h>
    #include <NetCon.h>
    #include <locale>
    #include <stdio.h>
    #pragma comment(lib,"Iphlpapi.lib")
    #pragma comment(lib,"Rpcrt4.lib")//GUID
    //启用、禁用网卡
    #pragma comment(lib,"ole32.lib")
    
    int main(int argc, char* argv[])
    {
        INetConnectionManager *pManager=NULL;
        INetConnection *pConnection=NULL;
        IEnumNetConnection *pEnum=NULL;
        ULONG           celtFetched;
        INetSharingManager *pNetSharingManager=NULL;
        INetConnectionProps *pProps=NULL;
        INetSharingConfiguration *pConfiguration=NULL;
        NETCON_PROPERTIES*   properties=NULL;
        NETCON_MEDIATYPE   mediatype;
    
        setlocale(LC_CTYPE, "");
        CoInitialize(NULL);
        CoCreateInstance(CLSID_ConnectionManager, NULL, CLSCTX_SERVER, IID_INetConnectionManager, (void**)&pManager);
        if(pManager == NULL)
        {
            printf("获取接受失败,Error:%d
    ",GetLastError());
            return 0;
        }
        pManager->EnumConnections(NCME_DEFAULT, &pEnum);
    
        while(  pEnum->Next(1, &pConnection, &celtFetched) == S_OK   )
        {
            pConnection->GetProperties(&properties);
    
            if(properties->Status == NCS_CONNECTED)
            {
                if(properties->dwCharacter & NCCF_INCOMING_ONLY == 1)
                {
                    wprintf(L""%S"正处于连接状态,可是此连接无法共享。确保至少有2个网络连接。
    ",properties->pszwName);
                    break;
                }
                CoCreateInstance(CLSID_NetSharingManager, NULL, CLSCTX_SERVER, IID_INetSharingManager, (void**)&pNetSharingManager);
                if(pNetSharingManager == NULL)
                {
                    printf("获取接受失败,Error:%d
    ",GetLastError());
                    break;
                }
                wprintf(L"发现"%s"正处于连接状态。尝试开启共享...
    ",properties->pszwName);
    
                if(properties->MediaType >= NCM_DIRECT && properties->MediaType <=NCM_PPPOE)
                {
                    pNetSharingManager->get_INetSharingConfigurationForINetConnection(pConnection,
                        &pConfiguration);
                    if(pConfiguration && SUCCEEDED(pConfiguration->EnableSharing(ICSSHARINGTYPE_PUBLIC)))
                    {
                        wprintf(L"成功设置"%s"为共享状态!
    ",properties->pszwName);
                        break;
                    }
                }
                wprintf(L"设置"%s"共享状态失败!Error:%d
    ",properties->pszwName,GetLastError());
            }
        }
    
    
        if(pManager) pManager->Release();
        if(pConnection) pConnection->Release();
        if(pEnum) pEnum->Release();
        if(pNetSharingManager) pNetSharingManager->Release();
        if(pConfiguration) pConfiguration->Release();
        CoUninitialize();
        return 0;
    }
    

  • 相关阅读:
    HP SAN Switch參考文檔地址
    hp,Qlogic,Brocade光纖卡查看方式
    使用nbrbutil工具來處理requested media id is in use, cannot process request
    NBU expired Media,Media ID not found in EMM database
    訪問索引的方法
    Linux光纖卡配置,磁盤掛載,多路徑設置
    Linux 6.5網卡配置
    Oracle ASM
    NBU bplabel命令擦除磁帶數據
    鼠标悬浮显示完整信息
  • 原文地址:https://www.cnblogs.com/llguanli/p/7236053.html
Copyright © 2011-2022 走看看