次の方法で共有


KsReadFile 関数 (ks.h)

KsReadFile 関数は、指定したファイル オブジェクトに対して読み取りを実行します。 呼び出し元が、FO_SYNCHRONOUS_IO ファイル オブジェクトに対する操作のためにファイルへのアクセスをシリアル化していることを前提としています。 この関数は、可能であれば FastIoDispatch の使用を試みるか、デバイス オブジェクトに対して読み取り要求を生成します。 関連するすべての統計が更新されます。

構文

KSDDKAPI NTSTATUS KsReadFile(
  [in]           PFILE_OBJECT     FileObject,
  [in, optional] PKEVENT          Event,
  [in, optional] PVOID            PortContext,
  [out]          PIO_STATUS_BLOCK IoStatusBlock,
  [out]          PVOID            Buffer,
  [in]           ULONG            Length,
  [in, optional] ULONG            Key,
  [in]           KPROCESSOR_MODE  RequestorMode
);

パラメーター

[in] FileObject

読み取りを実行するファイル オブジェクトを指定します。

[in, optional] Event

必要に応じて、読み取りで使用するイベントを格納します。 イベントが渡されない場合、呼び出しは同期ファイル オブジェクト上にあると見なされます。 そうでない場合、呼び出し元はファイル オブジェクトのイベントを待機しているか、非同期的に完了している可能性があります。 同期 I/O 用にファイルが開かれている場合、これは NULL である必要があります。 変数を使用する場合は、オブジェクト マネージャーによって割り当てられたイベントである必要があります。

[in, optional] PortContext

必要に応じて、完了ポートのコンテキスト情報を格納します。

[out] IoStatusBlock

状態情報を返すアドレスを指定します。 これは、リクエスター モードに関係なく、常に有効なアドレスであると見なされます。

[out] Buffer

データを読み取るバッファーを指定します。 バッファーをプローブしてロックする必要がある場合は、 RequesterMode と共に例外ハンドラーが使用されます。

[in] Length

渡されるバッファーのサイズを指定します。

[in, optional] Key

必要に応じて、キーが含まれます。存在しない場合は 0

[in] RequestorMode

生成する必要がある場合に読み取り IRP に配置するプロセッサ モードを示します。 また、バッファーをプローブしてロックする必要がある場合にも使用されます。 この変数は、高速 I/O 呼び出しを実行できるかどうかを決定します。 リクエスター モードが KernelMode ではなく、以前のモードであった場合は、高速 I/O を使用できません。

戻り値

KsReadFile 関数は、成功した場合はSTATUS_SUCCESSを返し、アクションが保留中の場合はSTATUS_PENDING、失敗した場合は読み取りエラーを返します。

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib