IoUnregisterPlugPlayNotificationEx 関数 (wdm.h)

IoUnregisterPlugPlayNotificationEx ルーチンは、プラグ アンド プレイ (PnP) イベントの通知に対するドライバーのコールバック ルーチンの登録を取り消します。

構文

NTSTATUS IoUnregisterPlugPlayNotificationEx(
  [in] PVOID NotificationEntry
);

パラメーター

[in] NotificationEntry

取り消す登録を表す不透明な値へのポインター。 呼び出し元は、 以前に IoRegisterPlugPlayNotification ルーチンを呼び出してこの値を取得しました。

戻り値

NotificationEntry パラメーターが有効な場合、IoUnregisterPlugPlayNotificationEx はSTATUS_SUCCESSを返します。

注釈

カーネル モード ドライバーは、PnP 通知を受信する登録を削除するには、このルーチンを呼び出します。 つまり、 IoUnregisterPlugPlayNotificationEx 呼び出しは、1 つの PnP イベント カテゴリのドライバー コールバック ルーチンの登録を取り消します。 ドライバーは、以前に IoRegisterPlugPlayNotification ルーチンを呼び出して、この登録を取得しました。

IoUnregisterPlugPlayNotificationEx 呼び出しが返された後、指定された登録は取り消され、それ以上のコールバックは行われません。

IoUnregisterPlugPlayNotification ルーチンは、IoUnregisterPlugPlayNotificationEx と似ていますが、IoUnregisterPlugPlayNotification 呼び出しが返された後にそれ以上コールバックが行われないことを保証することはできません。

多くの場合、ドライバーは通知コールバック ルーチンから IoUnregisterPlugPlayNotificationEx を呼び出します。 ほとんどの場合、ドライバーは、この方法で通知コールバック ルーチンの登録を安全に削除できます。 ただし、次の両方が当てはまる場合、通知コールバック ルーチンが IoUnregisterPlugPlayNotificationEx を呼び出してそれ自体の登録を解除するのは安全ではありません。

  • ドライバーは、通知コールバック ルーチンを登録する IoRegisterPlugPlayNotification 呼び出しに指定された EventCategoryFlags パラメーター値にPNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES フラグを設定します。

  • 通知コールバック ルーチンを登録する IoRegisterPlugPlayNotification 呼び出しがまだ返されていません。

コールバック ルーチンは、コールバック ルーチンが実行されているスレッドの実行をブロックする可能性のあるルーチンを呼び出してはなりません。 たとえば、適切に設計されていないコールバック ルーチンが 、IoUnregisterPlugPlayNotificationEx を呼び出す作業項目を作業項目キューに配置し、ワーカー スレッドが作業項目を完了するまで待機すると、オペレーティング システムのデッドロックが発生します。

ドライバーは、最初に通知コールバック ルーチンの登録を取り消してから、ルーチンに関連付けられているコンテキスト バッファーを解放する必要があります。

各アクティブな登録は、ドライバーの読み込まれたイメージを表すドライバー オブジェクトへのカウントされた参照を保持するため、PnP 通知登録をすべて削除するまで 、ドライバー をアンロードすることはできません。

詳細については、「 PnP 通知の使用」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 7 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

IoRegisterPlugPlayNotification

IoUnregisterPlugPlayNotification