KSMETHOD_ITEM構造体は、メソッド セット内の 1 つのメソッドを記述します。
構文
typedef struct {
ULONG MethodId;
union {
PFNKSHANDLER MethodHandler;
BOOLEAN MethodSupported;
};
ULONG MinMethod;
ULONG MinData;
PFNKSHANDLER SupportHandler;
ULONG Flags;
} KSMETHOD_ITEM, *PKSMETHOD_ITEM;
メンバーズ
MethodId
メソッド セット内のこのメソッドの識別子を指定します。
MethodHandler
ミニドライバーが提供する KStrMethodHandler コールバック ルーチン へのポインター。
MethodSupported
このメソッドがサポートされているかどうかを指定します。
MinMethod
メソッドを完全に指定するために必要なバッファーの最小サイズを指定します。 このサイズは、(KSMETHOD) バイト以上です。
MinData
メソッド データ バッファーを指定するために必要な最小サイズ バッファーを指定します。 このバッファーは、メソッドに関連する情報の読み取りまたは書き込みに使用されます。
SupportHandler
ミニドライバーが提供する KStrSupportHandler コールバック ルーチン へのポインター。
Flags
このメソッド要求の要求の種類を指定します。
| 価値 | メソッド要求の種類 |
|---|---|
| KSMETHOD_TYPE_NONE | ハンドラーの Data バッファーが使用されないことを示します。 バッファー処理されたメソッドの場合、領域は割り当てられますが、システム バッファー間でデータはコピーされません。 ソース モード (KSMETHOD_TYPE_SOURCE) では、MDL は作成されません。 |
| KSMETHOD_TYPE_READ | ハンドラーの Data バッファーからパラメーターを読み取ることが想定されていることを示します。 バッファーに格納されると、データはシステム バッファーにコピーされます。 ソース モードでは、IoReadAccess に対してデータプローブされ、ロックされます。 |
| KSMETHOD_TYPE_WRITE | パラメーターがハンドラーの Data バッファーに書き込まれる必要があることを示します。 バッファーに格納されると、システム バッファーからデータがコピーされます。 ソース モードの場合、IoWriteAccess に対してデータプローブされ、ロックされます。 |
| KSMETHOD_TYPE_MODIFY | パラメーターが読み取られ、ハンドラーの Data バッファーに書き込まれる必要があることを示します。 渡されたデータは、返されたデータによって上書きされます。 これは、渡された構造体が単に更新される可能性があることを意味する可能性があります。 バッファーに格納されると、データはシステム バッファーにコピーされ、IRP が完了するとコピーされます。 ソース モードの場合、データはプローブされ、IoModifyAccess ロックされます。 |
| KSMETHOD_TYPE_SOURCE | メソッドをソース モードで処理することを示します。 MDL が割り当てられ、データがプローブされてロックされます。 バッファーされたメソッドを示すには、この一覧の他のフラグを使用してこのフラグを指定します。 |
備考
ミニドライバーは、KSMETHOD_ITEM構造体を使用して、メソッド セット内のメソッドを定義します。 ミニドライバーはメソッドを実装し、MethodHandler メンバーを使用してこれらのメソッドを指します。 クライアントは、IOCTL_KS_METHOD要求と KSMETHOD 構造体を使用して、ミニドライバーが処理するカーネル ストリーミング オブジェクトに対してメソッドを実行できます。 詳細については、「KS メソッドの」を参照してください。
必要条件
| 要件 | 価値 |
|---|---|
| ヘッダー | ks.h (Ks.h を含む) |