Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud chcete modul zprostředkovatele uvolnit, operační systém volá funkci Unload modulu zprostředkovatele . Další informace o tom, jak během inicializace určit funkci Uvolnění modulu zprostředkovatele, najdete v tématu Inicializace a registrace modulu zprostředkovatele.
Funkce Uvolnění zprostředkovatelského modulu zajišťuje, že modul poskytovatele je před jeho uvolněním ze systémové paměti odregistrován od registrátora síťového modulu (NMR). Modul poskytovatele zahájí zrušení registrace z NMR voláním funkce NmrDeregisterProvider, kterou obvykle volá ze své funkce Unload. Modul zprostředkovatele se nesmí vrátit ze své funkce Unload, dokud nebude úplně odregistrován z NMR. Pokud volání NmrDeregisterProvider vrátí STATUS_PENDING, modul poskytovatele musí zavolat funkci NmrWaitForProviderDeregisterComplete pro čekání na dokončení zrušení registrace, než se vrátí ze své Unload funkce.
Například:
// Variable containing the handle for the registration
HANDLE ProviderHandle;
// Unload function
VOID
Unload(
IN PDRIVER_OBJECT DriverObject
)
{
NTSTATUS Status;
// Deregister the provider module from the NMR
Status =
NmrDeregisterProvider(
ProviderHandle
);
// Check if pending
if (Status == STATUS_PENDING)
{
// Wait for the deregistration to be completed
NmrWaitForProviderDeregisterComplete(
ProviderHandle
);
}
// An error occurred
else
{
// Handle error
...
}
}
Pokud je modul zprostředkovatele zaregistrovaný jako poskytovatel více síťových programovacích rozhraní (NPI), musí volat NmrDeregisterProvider pro každý NPI, který podporuje. Pokud je síťový modul zaregistrován jako jak poskytovatelský modul, tak klientský modul (to znamená, že je poskytovatelem jednoho NPI a klientem jiného NPI), musí volat jak NmrDeregisterProvider, tak NmrDeregisterClient.
Než se vrátí ze své funkce Unload, musí síťový modul počkat, až se dokončí všechna zrušení registrací.
Modul zprostředkovatele není nutný k volání NmrDeregisterProvider z funkce Unload. Například v situaci, kdy je modul poskytovatele dílčí součástí komplexního ovladače, může dojít k zrušení registrace modulu poskytovatele, když je deaktivován dílčí součást modulu zprostředkovatele. V takové situaci však musí řidič před vrácením ze své funkce Unload stále zajistit, aby modul poskytovatele byl zcela odregistrován z NMR.