NPI_CLIENT_DETACH_PROVIDER_FN コールバック関数 (netioddk.h)
クライアント モジュールの ClientDetachProvider コールバック関数は、プロバイダー モジュールからクライアント モジュールをデタッチします。
構文
NPI_CLIENT_DETACH_PROVIDER_FN NpiClientDetachProviderFn;
NTSTATUS NpiClientDetachProviderFn(
[in] PVOID ClientBindingContext
)
{...}
パラメーター
[in] ClientBindingContext
クライアント モジュールとデタッチ元のプロバイダー モジュールとの間のバインディングに対するクライアント モジュールのコンテキストへのポインター。 クライアント モジュールは、NmrClientAttachProvider 関数を呼び出してプロバイダー モジュールにアタッチするときに、このポインターをNMR に渡します。
戻り値
クライアント モジュールの ClientDetachProvider コールバック関数は、次のいずれかの NTSTATUS コードを返します。
リターン コード | 形容 |
---|---|
|
クライアント モジュールがプロバイダー モジュールから正常にデタッチされました。 |
|
クライアント モジュールをプロバイダー モジュールからすぐにデタッチできませんでした。 |
備考
クライアント モジュールとプロバイダー モジュール間のバインドを終了する必要がある場合は常に、クライアント モジュールの ClientDetachProvider コールバック関数を呼び出します。 デタッチは、NmrDeregisterClient 関数を呼び出すクライアント モジュール、または NmrDeregisterProvider 関数を呼び出すプロバイダー モジュールのいずれかによって開始されます。
ClientDetachProvider コールバック関数が呼び出された後、クライアント モジュールは、プロバイダー モジュールの NPI 関数をこれ以上呼び出さないでください。 クライアント モジュールの ClientDetachProvider コールバック関数が呼び出されたときに、プロバイダー モジュールの NPI 関数への進行中の呼び出しがない場合、クライアント モジュールの ClientDetachProvider コールバック関数はSTATUS_SUCCESSを返します。
クライアント モジュールの ClientDetachProvider コールバック関数が呼び出されたときに、1 つ以上のプロバイダー モジュールの NPI 関数の呼び出しが進行中の場合、クライアント モジュールの ClientDetachProvider コールバック関数はSTATUS_PENDINGを返します。 この状況では、クライアント モジュールはプロバイダー モジュールの NPI 関数に対するすべての進行中の呼び出しが完了した後に、 関数 NmrClientDetachProviderComplete を実行します。 への呼び出し NmrClientDetachProviderComplete 関数は、プロバイダー モジュールからのデタッチが完了したことをNMR に通知します。
NMR はクライアント モジュールを呼び出します。 ClientCleanupBindingContext コールバック関数とプロバイダー モジュールの ProviderCleanupBindingContext クライアント モジュールとプロバイダー モジュールの両方が相互にデタッチを完了した後のコールバック関数です。
このNMR は、任意の IRQL <= DISPATCH_LEVELでクライアント モジュールの ClientDetachProvider コールバック関数を呼び出します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | ウィンドウズ |
ヘッダー | netioddk.h (Wsk.h を含む) |
IRQL | <= DISPATCH_LEVEL |