Aggiunta di un componente
Il sottosistema di configurazione di rete può informare un oggetto notify quando il sottosistema aggiunge componenti di rete. Dopo l'inizializzazione di un oggetto notify, il sottosistema chiama il metodo INetCfgComponentNotifyGlobal::GetSupportedNotifications per ottenere i tipi di notifiche richiesti dall'oggetto. Se l'oggetto notify ha specificato che è necessaria una notifica quando vengono aggiunti i componenti di rete, il sottosistema chiama il metodo di notifica dell'oggetto INetCfgComponentNotifyGlobal::SysNotifyComponent e passa NCN_ADD per informare l'oggetto notifica che il sottosistema ha installato un componente di rete. Se il componente proprietario dell'oggetto notify deve essere associato al componente specificato, l'oggetto notify deve eseguire operazioni per facilitare l'associazione. Ad esempio, il codice seguente mostra come l'oggetto notify può associare il relativo componente al componente specificato se il componente specificato è una scheda di rete fisica necessaria.
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;
}