次の方法で共有


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 コードを返します。

リターン コード 形容
STATUS_SUCCESS
プロバイダー モジュールがクライアント モジュールから正常にデタッチされました。
STATUS_PENDING
プロバイダー モジュールをクライアント モジュールからすぐにデタッチできませんでした。

備考

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

関連項目

ClientCleanupBindingContext

NPI_PROVIDER_CHARACTERISTICS

NmrDeregisterClient

NmrDeregisterProvider

NmrProviderDetachClientComplete

ProviderAttachClient

ProviderCleanupBindingContext