Compartir a través de


Agregar componentes

El subsistema de configuración de red puede informar a un objeto de notificación cuando el subsistema agrega componentes de red. Después de inicializar un objeto notify, el subsistema llama al método INetCfgComponentNotifyGlobal::GetSupportedNotifications del objeto notify para recuperar los tipos de notificaciones que requiere el objeto. Si el objeto de notificación especificó que requería notificación cuando se agregan componentes de red, el subsistema llama al método INetCfgComponentNotifyGlobal::SysNotifyComponent del objeto de notificación y pasa NCN_ADD para informar al objeto de notificación de que el subsistema instaló un componente de red. Si el componente que posee el objeto notify debe enlazarse al componente especificado, el objeto notify debe realizar operaciones para facilitar el enlace. Por ejemplo, el código siguiente muestra cómo el objeto notify puede enlazar su componente al componente especificado si el componente especificado es una tarjeta de red física necesaria.

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