Пример #1
0
BOOLEAN ConnectionAvailable(VOID)
{
    INetworkListManager* networkListManager = NULL;

    if (SUCCEEDED(CoCreateInstance(
        &CLSID_NetworkListManager, 
        NULL, 
        CLSCTX_ALL, 
        &IID_INetworkListManager, 
        &networkListManager
        )))
    {
        VARIANT_BOOL isConnected = VARIANT_FALSE;
        VARIANT_BOOL isConnectedInternet = VARIANT_FALSE;

        // Query the relevant properties.
        INetworkListManager_get_IsConnected(networkListManager, &isConnected);
        INetworkListManager_get_IsConnectedToInternet(networkListManager, &isConnectedInternet);

        // Cleanup the INetworkListManger COM objects.
        INetworkListManager_Release(networkListManager);

        // Check if Windows is connected to a network and it's connected to the internet.
        if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE)
            return TRUE;

        // We're not connected to anything
    }

    return FALSE;
}
Пример #2
0
BOOLEAN ConnectionAvailable(VOID)
{
    if (WindowsVersion > WINDOWS_VISTA)
    {
        INetworkListManager* pNetworkListManager = NULL;

        // Create an instance of the INetworkListManger COM object.
        if (SUCCEEDED(CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, &pNetworkListManager)))
        {
            VARIANT_BOOL isConnected = VARIANT_FALSE;
            VARIANT_BOOL isConnectedInternet = VARIANT_FALSE;

            // Query the relevant properties.
            INetworkListManager_get_IsConnected(pNetworkListManager, &isConnected);
            INetworkListManager_get_IsConnectedToInternet(pNetworkListManager, &isConnectedInternet);

            // Cleanup the INetworkListManger COM objects.
            INetworkListManager_Release(pNetworkListManager);

            // Check if Windows is connected to a network and it's connected to the internet.
            if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE)
                return TRUE;

            // We're not connected to anything
            //return FALSE;
        }
    }

    typedef BOOL(WINAPI *_InternetGetConnectedState)(
        __out PULONG lpdwFlags,
        __reserved ULONG dwReserved
        );

    BOOLEAN isSuccess = FALSE;
    ULONG wininetState = 0;
    _InternetGetConnectedState InternetGetConnectedState_I = NULL;
    HMODULE inetHandle = NULL;

    __try
    {
        if (!(inetHandle = LoadLibrary(L"wininet.dll")))
            __leave;

        InternetGetConnectedState_I = (_InternetGetConnectedState)GetProcAddress(inetHandle, "InternetGetConnectedState");
        if (!InternetGetConnectedState_I)
            __leave;

        if (InternetGetConnectedState_I(&wininetState, 0))
            isSuccess = TRUE;
    }
    __finally
    {
        if (inetHandle)
        {
            FreeLibrary(inetHandle);
        }
    }

    return isSuccess;
}
Пример #3
0
static BOOL ConnectionAvailable(
    VOID
    )
{
    if (WindowsVersion > WINDOWS_XP)
    {
        INetworkListManager *pNetworkListManager;

        // Create an instance of the INetworkListManger COM object.
        if (SUCCEEDED(CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, &pNetworkListManager)))
        {
            VARIANT_BOOL isConnected = VARIANT_FALSE;
            VARIANT_BOOL isConnectedInternet = VARIANT_FALSE;

            // Query the relevant properties.
            INetworkListManager_get_IsConnected(pNetworkListManager, &isConnected);
            INetworkListManager_get_IsConnectedToInternet(pNetworkListManager, &isConnectedInternet);

            // Cleanup the INetworkListManger COM object.
            INetworkListManager_Release(pNetworkListManager);
            pNetworkListManager = NULL;

            // Check if Windows is connected to a network and it's connected to the internet.
            if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE)
            {
                // We're online and connected to the internet.
                return TRUE;
            }

            // We're not connected to anything.
            return FALSE;
        }

        // If we reached here, we were unable to init the INetworkListManager, fall back to InternetGetConnectedState.
        goto NOT_SUPPORTED;
    }
    else
NOT_SUPPORTED:
    {
        DWORD dwType;

        if (InternetGetConnectedState(&dwType, 0))
        {
            return TRUE;
        }
        else
        {
            LogEvent(NULL, PhFormatString(L"Updater: (ConnectionAvailable) InternetGetConnectedState failed to detect an active Internet connection (%d)", GetLastError()));
        }

        //if (!InternetCheckConnection(NULL, FLAG_ICC_FORCE_CONNECTION, 0))
        //{
        // LogEvent(PhFormatString(L"Updater: (ConnectionAvailable) InternetCheckConnection failed connection to Sourceforge.net (%d)", GetLastError()));
        // return FALSE;
        //}
    }

    return FALSE;
}
Пример #4
0
static void test_INetworkListManager( void )
{
    IConnectionPointContainer *cpc;
    INetworkListManager *mgr;
    INetworkCostManager *cost_mgr;
    NLM_CONNECTIVITY connectivity;
    VARIANT_BOOL connected;
    HRESULT hr;

    hr = CoCreateInstance( &CLSID_NetworkListManager, NULL, CLSCTX_INPROC_SERVER,
                           &IID_INetworkListManager, (void **)&mgr );
    if (hr != S_OK)
    {
        win_skip( "can't create instance of NetworkListManager\n" );
        return;
    }

    connectivity = 0xdeadbeef;
    hr = INetworkListManager_GetConnectivity( mgr, &connectivity );
    ok( hr == S_OK, "got %08x\n", hr );
    ok( connectivity != 0xdeadbeef, "unchanged value\n" );
    trace( "GetConnectivity: %08x\n", connectivity );

    connected = 0xdead;
    hr = INetworkListManager_IsConnected( mgr, &connected );
    ok( hr == S_OK, "got %08x\n", hr );
    ok( connected == VARIANT_TRUE || connected == VARIANT_FALSE, "expected boolean value\n" );

    connected = 0xdead;
    hr = INetworkListManager_IsConnectedToInternet( mgr, &connected );
    ok( hr == S_OK, "got %08x\n", hr );
    ok( connected == VARIANT_TRUE || connected == VARIANT_FALSE, "expected boolean value\n" );

    /* INetworkCostManager is supported starting Win8 */
    hr = INetworkListManager_QueryInterface( mgr, &IID_INetworkCostManager, (void **)&cost_mgr );
    ok( hr == S_OK || broken(hr == E_NOINTERFACE), "got %08x\n", hr );
    if (hr == S_OK)
    {
        DWORD cost;

        hr = INetworkCostManager_GetCost( cost_mgr, NULL, NULL );
        ok( hr == E_POINTER, "got %08x\n", hr );

        cost = 0xdeadbeef;
        hr = INetworkCostManager_GetCost( cost_mgr, &cost, NULL );
        ok( hr == S_OK, "got %08x\n", hr );
        ok( cost != 0xdeadbeef, "cost not set\n" );

        INetworkCostManager_Release( cost_mgr );
    }

    hr = INetworkListManager_QueryInterface( mgr, &IID_IConnectionPointContainer, (void**)&cpc );
    ok( hr == S_OK, "got %08x\n", hr );
    IConnectionPointContainer_Release( cpc );

    INetworkListManager_Release( mgr );
}
Пример #5
0
BOOL ConnectionAvailable(
    VOID
    )
{
    BOOLEAN isSuccess = FALSE;
    HMODULE libraryHandle = NULL;
    INetworkListManager* networkListPtr = NULL;

    __try
    {
        if (WindowsVersion < WINDOWS_VISTA)
        {
            ULONG inetState = 0;
            _InternetGetConnectedState inetGetConnectedState_I = NULL;

            if (!(libraryHandle = LoadLibrary(L"wininet.dll")))
                __leave;

            if (!(inetGetConnectedState_I = (_InternetGetConnectedState)GetProcAddress(libraryHandle, "InternetGetConnectedState")))
                __leave;

            if (inetGetConnectedState_I(&inetState, 0))
                isSuccess = TRUE;
        }
        else
        {                
            VARIANT_BOOL isConnected = VARIANT_FALSE;
            VARIANT_BOOL isConnectedInternet = VARIANT_FALSE;

            // Create an instance of the INetworkListManger COM object.
            if (FAILED(CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, &networkListPtr)))
                __leave;

            // Query the relevant properties.
            INetworkListManager_get_IsConnected(networkListPtr, &isConnected);
            INetworkListManager_get_IsConnectedToInternet(networkListPtr, &isConnectedInternet);

            // Check if Windows is connected to a network and it's connected to the internet.
            if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE)
                isSuccess = TRUE;
        }
    }
    __finally
    {
        if (libraryHandle)
            FreeLibrary(libraryHandle);

        if (networkListPtr)
            INetworkListManager_Release(networkListPtr);
    }

    return isSuccess;
}