windows-nt/Source/XPSP1/NT/net/config/netman/test/main.cpp
2020-09-26 16:20:57 +08:00

85 lines
2.7 KiB
C++

#include "pch.h"
#pragma hdrstop
#include <netcon.h>
#include <netconp.h>
#include <tchar.h>
EXTERN_C
VOID
__cdecl
wmain ()
/*
VOID
wmainCRTStartup (
VOID
)
*/
{
HRESULT hr;
INetConnectionManager * pconMan;
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED | COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance(CLSID_ConnectionManager, NULL,
CLSCTX_SERVER | CLSCTX_NO_CODE_DOWNLOAD,
IID_INetConnectionManager,
(LPVOID *)&pconMan);
if (SUCCEEDED(hr))
{
IEnumNetConnection* pEnum;
hr = pconMan->EnumConnections(NCME_DEFAULT, &pEnum);
if (SUCCEEDED(hr))
{
INetConnection* aNetCon [512];
ULONG cNetCon;
hr = pEnum->Next (celems(aNetCon), aNetCon, &cNetCon);
_tprintf(L"Number of connections: %d\r\n", cNetCon);
if (SUCCEEDED(hr))
{
for (ULONG i = 0; i < cNetCon; i++)
{
INetConnection* pNetCon = aNetCon[i];
NETCON_PROPERTIES* pProps;
hr = pNetCon->GetProperties (&pProps);
if (SUCCEEDED(hr))
{
_tprintf(L"Connection name: %s Type: %d\r\n", pProps->pszwName, pProps->MediaType);
if (pProps->MediaType == NCT_LAN && pProps->Status == NCS_MEDIA_DISCONNECTED)
{
_tprintf(L"Connection %s (%s) is currently Disconnected", pProps->pszwName, pProps->pszwDeviceName);
}
if (pProps->dwCharacter & NCCF_INCOMING_ONLY)
{
_tprintf(L"Inbound Connection\r\n");
INetConnectionSysTray* pTray;
hr = pNetCon->QueryInterface(IID_INetConnectionSysTray, reinterpret_cast<void **>(&pTray));
_tprintf(L"QI returned: %x", hr);
if (SUCCEEDED(hr))
{
pTray->IconStateChanged();
}
}
CoTaskMemFree(pProps);
}
ReleaseObj (pNetCon);
}
}
pEnum->Release();
}
pconMan->Release();
}
CoUninitialize();
}
}