IO_SESSION_STATE_NOTIFICATION構造体 (wdm.h)
IO_SESSION_STATE_NOTIFICATION 構造体には、ドライバーがセッション イベントの通知を受信するために登録するときに、IoRegisterContainerNotification ルーチンにカーネル モード ドライバーが提供する情報が含まれています。
typedef struct _IO_SESSION_STATE_NOTIFICATION {
ULONG Size;
ULONG Flags;
PVOID IoObject;
ULONG EventMask;
PVOID Context;
} IO_SESSION_STATE_NOTIFICATION, *PIO_SESSION_STATE_NOTIFICATION;
Size
IO_SESSION_STATE_NOTIFICATION 構造体のサイズ (バイト単位)。
Flags
現在、このメンバーに対してフラグは定義されていません。 0 に設定します。
IoObject
ドライバーが所有する I/O オブジェクトへのポインター。 このメンバーは、DEVICE_OBJECT、DRIVER_OBJECT、または FILE_OBJECT 構造体を指すことができます。 登録の有効期間中、I/O オブジェクトは有効なままである必要があります。 登録済みのデバイス オブジェクトを削除する前に、登録済みのドライバーをアンロードするか、登録済みのファイル オブジェクトを閉じる前に、IoUnregisterContainerNotification ルーチンを呼び出して登録を取り消します。 ドライバーは、複数の I/O オブジェクトの同時登録を維持できますが、同じ I/O オブジェクトに対して複数のアクティブな登録を作成することはできません。
EventMask
セッション イベントのビットをマスクします。 これらのマスク ビットは、ドライバーが通知を要求するイベントを示します。
セッション イベントの通知を受信するために登録するには、カーネル モード ドライバーは、IoRegisterContainerNotification ルーチンを呼び出します。 ドライバーが通知を受信するセッション イベントを指定するには、ドライバーは、1 つ以上の IO_SESSION_STATE_XXX 定数のビットごとの OR に、この構造体の EventMask メンバーを設定します。
このメンバーを、次の 1 つ以上の IO_SESSION_STATE_XXX 定数のビットごとの OR に設定します。
Context
ドライバーが特定のセッション通知登録のプライベート データを格納できるコンテキスト バッファーへのポインター。 I/O マネージャーは、このポインターをドライバーの通知コールバック ルーチンに渡します (IoRegisterContainerNotification ルーチンの CallbackFunction パラメーターによって指定されます)。 I/O マネージャーは、コンテキスト ポインターの検証や、それが指すバッファーへのアクセスを試みません。 ドライバーがコンテキスト バッファーを必要としない場合、このメンバーは NULL を できます。
この構造体は、IoRegisterContainerNotification ルーチンによって使用されます。 IoRegisterContainerNotification を呼び出すドライバーは、この構造体を使用して、登録するセッション イベント通知を指定します。
セッションごとのデバイス オブジェクトは、特定のユーザー セッションのみがアクセスできるデバイスを表します。 ドライバーがセッションごとのデバイス オブジェクトであるデバイス オブジェクトを指すように IoObject メンバーを設定する場合、IoRegisterContainerNotification は、デバイス オブジェクトによって表されるセッションで発生したイベントの通知のみを受信するようにドライバーを登録します。 IoObject がセッションごとのデバイス オブジェクトではないデバイス オブジェクトを指している場合、または IoObject がデバイス オブジェクトではないオブジェクトを指している場合、IoRegisterContainerNotification は、コンピューター上のすべてのセッションで発生するイベントの通知を受け取るためにドライバーを登録します。
デバイス オブジェクトがセッションごとのデバイス オブジェクトであるかどうかを判断するために、ドライバーは、IoGetDevicePropertyData ルーチンを呼び出して、デバイス オブジェクトのプロパティ ストアの DEVPKEY_Device_SessionId プロパティ キーを照会できます。 DEVPKEY_Device_SessionId プロパティが存在し、プロパティの値が 0 以外の ターミナル サービス セッション識別子に設定されている場合、デバイス オブジェクトはセッションごとのデバイス オブジェクトです。 詳細については、DEVPKEY_Device_SessionIdを参照してください。
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 以降のバージョンの Windows オペレーティング システムでサポートされています。 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Fltkernel.h を含む) |
IoGetDevicePropertyData の
IoRegisterContainerNotification の