Dodawanie składnika

Podsystem konfiguracji sieci może poinformować obiekt powiadamiania, gdy podsystem dodaje składniki sieciowe. Po zainicjowaniu obiektu powiadomień, podsystem wywołuje metodę INetCfgComponentNotifyGlobal::GetSupportedNotifications obiektu , aby pobrać rodzaje powiadomień wymaganych przez ten obiekt. "Jeśli obiekt powiadamiania określił, że wymagane jest powiadomienie podczas dodawania składników sieciowych, podsystem wywołuje metodę obiektu powiadamiania INetCfgComponentNotifyGlobal::SysNotifyComponent i przekazuje NCN_ADD, aby poinformować obiekt powiadamiania, że podsystem zainstalował składnik sieciowy." Jeśli składnik, który jest właścicielem obiektu powiadamiania, powinien wiązać się z określonym składnikiem, obiekt powiadamiania powinien wykonywać operacje ułatwiające powiązanie. Na przykład poniższy kod pokazuje, jak obiekt powiadamiania może powiązać jego składnik z określonym składnikiem, jeśli określony składnik jest wymaganą fizyczną kartą sieciową.

HRESULT CSample::SysNotifyComponent(DWORD dwChangeFlag,
        INetCfgComponent* pnccItem)
{
    HRESULT hr = S_OK;
    INetCfgComponentBindings *pncfgcompbind;
    // Retrieve bindings for the notify object's component (m_pncc)
    hr = m_pncc->QueryInterface(IID_INetCfgComponentBindings, 
                                (LPVOID*)&pncfgcompbind);
    // Determine if notification is about adding a component
    if (SUCCEEDED(hr) && (NCN_ADD & dwChangeFlag)) {
        // Retrieve the characteristics of the added component
        DWORD dwcc;
        hr = pnccItem->GetCharacteristics(&dwcc);
        // Determine if the added component is a physical adapter
        if (SUCCEEDED(hr) && (dwcc & NCF_PHYSICAL)) {
            // Determine the component's ID
            LPWSTR pszwInfId;
            hr = pnccItem->GetId(&pszwInfId);
            if (SUCCEEDED(hr)) {
                // Compare the component's ID to the required ID
                // and if they are the same perform the binding.
                static const TCHAR c_szCompId[] = TEXT("BINDTO_NIC");
                if (!_tcsicmp(pszwInfId, c_szCompId)) {
                    hr = pncfgcompbind->BindTo(pnccItem);
                }
            }
        }
    }
    return hr;
}