Partager via


Ajout d'un composant

Le sous-système de configuration réseau peut informer un objet de notification lorsque le sous-système ajoute des composants réseau. Après avoir initialisé un objet notify, le sous-système appelle la méthode INetCfgComponentNotifyGlobal::GetSupportedNotifications de l’objet notify pour récupérer les types de notifications requis par l’objet. Si l’objet notify a spécifié qu’il nécessitait une notification lors de l’ajout de composants réseau, le sous-système appelle la méthode INetCfgComponentNotifyGlobal::SysNotifyComponent de l’objet de notification et passe NCN_ADD pour informer l’objet de notification que le sous-système a installé un composant réseau. Si le composant propriétaire de l’objet notify doit être lié au composant spécifié, l’objet notify doit effectuer des opérations pour faciliter la liaison. Par exemple, le code suivant montre comment l’objet notify peut lier son composant au composant spécifié si le composant spécifié est un réseau physique requis carte.

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;
}