KsSetMajorFunctionHandler 関数 (ks.h)
KsSetMajorFunctionHandler 関数は、内部ディスパッチを使用するように、指定されたメジャー関数のハンドラーを設定します。 不透明なオブジェクト ヘッダーに含まれるKSDISPATCH_TABLEを介してルーティングされ、ファイル オブジェクト内の FsContext によって指される構造体内の最初の要素になります。 ディスパッチでは、テーブルと FsContext 構造体が KsAllocateObjectHeader を使用してデバイスによって初期化されていることを前提としています。
構文
KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
[in] PDRIVER_OBJECT DriverObject,
[in] ULONG MajorFunction
);
パラメーター
[in] DriverObject
主要な関数を処理するドライバー オブジェクトを指定します。
[in] MajorFunction
処理する主要な関数識別子を指定します。 これにより、ドライバー オブジェクトの主要な関数ポインターが内部関数に設定され、 KSDISPATCH_TABLE 関数にディスパッチされます。 このテーブルへのポインターは、ディスパッチされる特定の IRP のファイル オブジェクト内の FsContext によって指される構造体の最初の要素であると見なされます。 有効なメジャー関数識別子は、一覧に示されています。
識別子 | 説明 |
---|---|
IRP_MJ_CREATE | IRP をCreateします。 この例では、フィルターの新しいインスタンスを作成したり、フィルターの下のピンやピンの下の時計などのオブジェクトを作成したりするために、作成要求を使用できます。 これは、ドライバー オブジェクトのエクステントの最初の要素に、渡された名前に基づいて作成するオブジェクトの種類を検索するために使用されるKSDEVICE_HEADER構造体が含まれていることを前提としています。 親ファイル オブジェクトが指定されている場合、そのオブジェクトのKSDISPATCH_TABLE。 FsContext の ChildCreateHandlerTable を調べて、作成に使用するハンドラーを決定するか、デバイス オブジェクトのテーブルを使用します。 |
IRP_MJ_CLOSE | IRP を閉じます。 |
IRP_MJ_DEVICE_CONTROL | デバイス コントロール IRP。 |
IRP_MJ_READ | IRP を読み取る。 |
IRP_MJ_WRITE | IRP を書き込みます。 |
IRP_MJ_FLUSH_BUFFERS | IRP をフラッシュします。 |
IRP_MJ_QUERY_SECURITY | セキュリティ情報のクエリを実行します。 |
IRP_MJ_SET_SECURITY | セキュリティ情報を設定します。 |
KSDISPATCH_FASTIO | このフラグは、一般的なメジャー関数エントリではなく、高速 I/O ディスパッチ テーブルを参照するようにエントリを指定するために、MajorFunction 識別子に追加できます。 これは、IRP_MJ_READ、IRP_MJ_WRITE、またはIRP_MJ_DEVICE_CONTROLでのみ有効です。 ドライバーは、DriverObject-FastIoDispatch> テーブルの作成を担当します。 通常のディスパッチと同様に、ドライバー オブジェクトにハンドラーが設定されている場合、エントリが DispatchFastIoDeviceControlFailure または同様の関数を指している場合でも、すべてのファイル オブジェクトでその高速 I/O を処理する必要があります。 |
戻り値
MajorFunction 識別子が有効な場合は、STATUS_SUCCESSを返します。
注釈
ドライバー オブジェクトにメジャー関数ハンドラーが設定されている場合、エントリが KsDispatchInvalidDeviceRequest を指している場合でも、すべてのファイル オブジェクトでそのメジャー関数を処理する必要があります。
KSDISPATCH_FASTIO
このフラグは、高速 I/O エントリを IRP ベースのエントリではなく設定する必要があることを指定するために使用できます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ks.h (Ks.h を含む) |
Library | Ks.lib |