Adicionando um componente
O subsistema de configuração de rede pode informar um objeto de notificação quando o subsistema adiciona componentes de rede. Depois de inicializar um objeto notify, o subsistema chama o método INetCfgComponentNotifyGlobal::GetSupportedNotifications do objeto de notificação para recuperar os tipos de notificações exigidos pelo objeto. Se o objeto notify especificou que ele exigia notificação quando os componentes de rede são adicionados, o subsistema chama o método INetCfgComponentNotifyGlobal::SysNotifyComponent do objeto de notificação e passa NCN_ADD para informar ao objeto de notificação que o subsistema instalou um componente de rede. Se o componente que possui o objeto notify deve ser associado ao componente especificado, o objeto notify deve executar operações para facilitar a associação. Por exemplo, o código a seguir mostra como o objeto notify pode associar seu componente ao componente especificado se o componente especificado for uma rede física necessária cartão.
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;
}