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 を生成する必要がある場合に配置するプロセッサ モードを示します。 この変数は、高速 I/O 呼び出しを実行できるかどうかを決定します。 リクエスター・モードがカーネル・モードではなく、前のモードである場合、高速入出力は使用できません。
戻り値
KsStreamIo 関数は、成功した場合はSTATUS_SUCCESSを返し、アクションが保留中の場合はSTATUS_PENDING、失敗した場合は I/O エラーを返します。
注釈
CompletionInvocationFlags 変数には次の列挙値が使用され、型は KSCOMPLETION_INVOCATION です。
CompletionInvocationFlags | 説明 |
---|---|
KsInvokeOnSuccess | 成功した場合に完了ルーチンを呼び出します。 |
KsInvokeOnError | エラー時に完了ルーチンを呼び出します。 |
KsInvokeOnCancel | 取り消し時に完了ルーチンを呼び出します。 |
Flags 変数には、次の定義値が使用されます。
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と同じです。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ks.h (Ks.h を含む) |
Library | Ks.lib |