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