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 メンバーを設定します。
このメンバーを、次の IO_SESSION_STATE_XXX 定数の 1 つ以上のビットごとの 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 オペレーティング システムでサポートされています。 |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Fltkernel.h を含む) |