KsStreamIo 関数 (ks.h)
KsStreamIo 関数は、指定されたファイル オブジェクトに対してストリームの読み取りまたは書き込みを実行します。 この関数は、可能な場合 FastIoDispatch の使用を試みるか、デバイス オブジェクトに対して読み取りまたは書き込み要求を生成します。
構文
KSDDKAPI NTSTATUS KsStreamIo(
[in] PFILE_OBJECT FileObject,
[in, optional] PKEVENT Event,
[in, optional] PVOID PortContext,
[in, optional] PIO_COMPLETION_ROUTINE CompletionRoutine,
[in, optional] PVOID CompletionContext,
[in, optional] KSCOMPLETION_INVOCATION CompletionInvocationFlags,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in, out] PVOID StreamHeaders,
[in] ULONG Length,
[in] ULONG Flags,
[in] KPROCESSOR_MODE RequestorMode
);
パラメーター
[in] FileObject
I/O を実行するファイル オブジェクトを指定します。
[in, optional] Event
必要に応じて、I/O で使用するイベントを格納します。 何も渡されない場合、呼び出しは同期ファイル オブジェクト上にあると見なされるか、呼び出し元がファイル オブジェクトのイベントを待機しているか、非同期的に完了できます。 使用する場合、KSSTREAM_SYNCHRONOUS フラグが設定されていない場合は、オブジェクト マネージャーによって割り当てられたイベントである必要があります。 呼び出し元が非同期 I/O を実行している場合は、ファイル オブジェクトのイベントを待機するか、このパラメーターにイベントを渡して待機する必要があります。 これを行わない場合、呼び出し元は、呼び出しによって IoStatusBlock が更新されたタイミングを認識する方法はありません。
[in, optional] PortContext
必要に応じて、完了ポートのコンテキスト情報を格納します。
[in, optional] CompletionRoutine
必要に応じて、この IRP の完了ルーチンを指します。
[in, optional] CompletionContext
CompletionRoutine 指定すると、完了ルーチンコールバックにコンテキスト ポインターが提供されます。
[in, optional] CompletionInvocationFlags
完了ルーチンが呼び出されるタイミングを指定する呼び出しフラグを指定します。 使用される値については、次の表を参照してください。
[out] IoStatusBlock
状態情報を返す場所。 これは、要求元モードに関係なく、常に有効なアドレスであると見なされます。 この値は、呼び出しによって状態が更新されるまで有効なままである必要があります。 呼び出し元は、同期 I/O を実行するか、ファイル オブジェクトのイベントまたは Event パラメーターで渡されたイベントを待機してから、このアドレスが無効になることを許可する必要があります。
[in, out] StreamHeaders
ストリーム ヘッダーの一覧を指定します。 このアドレスとデータ バッファーのアドレスは、適切なアクセスのためにプローブされていると見なされます。 ストリーミング ヘッダーを送信するカーネル モード クライアントは、NonPagedPool メモリからヘッダーを割り当てる必要があります。
[in] Length
渡 StreamHeaders のサイズを指定します。
[in] Flags
I/O のさまざまなフラグを指定します。 使用される値については、次の表を参照してください。
[in] RequestorMode
IRP を生成する必要がある場合に IRP に配置するプロセッサ モードを示します。 この変数は、高速 I/O 呼び出しを実行できるかどうかを決定します。 リクエスター モードがカーネル モードではなく、前のモードである場合、高速 I/O は使用できません。
戻り値
KsStreamIo 関数は、成功した場合はSTATUS_SUCCESSを返し、アクションが保留中の場合、または失敗した場合は I/O エラーを返STATUS_PENDING。
備考
次の列挙値は、CompletionInvocationFlags 変数に使用され、KSCOMPLETION_INVOCATION型です。
CompletionInvocationFlags | 形容 |
---|---|
KsInvokeOnSuccess | 成功した場合に完了ルーチンを呼び出します。 |
KsInvokeOnError | エラー時に完了ルーチンを呼び出します。 |
KsInvokeOnCancel | 取り消し時に完了ルーチンを呼び出します。 |
Flags 変数には、次の定義値が使用されます。
フラグの | 形容 |
---|---|
KSSTREAM_READ | IOCTL_KS_STREAMREAD IRP をビルドすることを指定します。 これが既定値です。 |
KSSTREAM_WRITE | IOCTL_KS_STREAMWRITE IRP をビルドすることを指定します。 |
KSSTREAM_PAGED_DATA | データがページング可能であることを指定します。 これは既定値であり、常に使用できます。 |
KSSTREAM_NONPAGED_DATA | データが非ページであり、パフォーマンスの向上として使用できることを指定します。 |
KSSTREAM_SYNCHRONOUS | IRP が同期的であることを指定します。 つまり、Event パラメーターが渡された場合、そのパラメーターはオブジェクト マネージャー イベントとして扱われず、参照も逆参照もされません。 |
KSSTREAM_READはKSPROBE_STREAMREADと同等です。
同様に、KSSTREAM_WRITEはKSPROBE_STREAMWRITEと同等です。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | ks.h (Ks.h を含む) |
ライブラリ | Ks.lib |