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 は、プロバイダー モジュールの ProviderDetachClient コールバック関数を IRQL <= DISPATCH_LEVELで呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | Windows |
ヘッダー | netioddk.h (Wsk.h を含む) |
IRQL | <= DISPATCH_LEVEL |