次の方法で共有


WdfRequestGetFileObject 関数 (wdfrequest.h)

[KMDF と UMDF に適用]

WdfRequestGetFileObject メソッドは、指定された I/O 要求に関連付けられているフレームワーク ファイル オブジェクトを取得します。

構文

WDFFILEOBJECT WdfRequestGetFileObject(
  [in] WDFREQUEST Request
);

パラメーター

[in] Request

フレームワーク要求オブジェクトへのハンドル。

戻り値

フレームワークが指定された要求のファイル オブジェクトを作成した場合、WdfRequestGetFileObject はフレームワーク ファイル オブジェクトへのハンドルを返します。 それ以外の場合、このメソッドは NULL を返します。 (ドライバーは通常、WDF_FILEOBJECT_CONFIG構造体でWdfFileObjectCanBeOptional ビット フラグを設定する場合にのみ NULL 戻り値をテストします。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

WdfRequestGetFileObject メソッドは、次のいずれかの場合に NULL を返します。

  • ドライバーで WdfDeviceInitSetFileObjectConfig が呼び出されておらず、フレームワークでファイル オブジェクトを作成する WDF_FILEOBJECT_CLASS 値が指定されています。
  • 別のドライバーは、最初に WdfRequestTypeCreate の要求の種類を送信せずに、読み取り、書き込み、または I/O コントロール要求をドライバーに送信しました。
WdfRequestGetFileObject とフレームワーク ファイル オブジェクトの詳細については、「フレームワーク ファイル オブジェクト」を参照してください。

次のコード例では、I/O 要求のファイル オブジェクトを取得し、ファイル オブジェクトのコンテキスト空間へのポインターを取得するドライバー定義ルーチンを呼び出します。

VOID
MyEvtIoWrite(
    IN WDFQUEUE  Queue,
    IN WDFREQUEST  Request,
    IN size_t  Length
    )
{
    WDFFILEOBJECT  fileObject;
    PFILE_OPEN_CONTEXT  pOpenContext;

    fileObject = WdfRequestGetFileObject(Request);
    pOpenContext = GetFileObjectContext(fileObject)->OpenContext;
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfrequest.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)FileObjectConfigured(kmdf)InvalidReqAccess(kmdf)InvalidReqAccessLocal(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WDF_FILEOBJECT_CLASS

WdfDeviceInitSetFileObjectConfig