WdfDeviceMapIoSpace 関数 (wdfdevice.h)

[UMDF にのみ適用]

WdfDeviceMapIoSpace 関数は、指定された物理アドレス範囲をシステム アドレス空間にマップし、擬似ベース アドレスを返します。

構文

NTSTATUS WdfDeviceMapIoSpace(
  [in]  WDFDEVICE           Device,
  [in]  PHYSICAL_ADDRESS    PhysicalAddress,
  [in]  SIZE_T              NumberOfBytes,
  [in]  MEMORY_CACHING_TYPE CacheType,
  [out] PVOID               *PseudoBaseAddress
);

パラメーター

[in] Device

フレームワーク デバイス オブジェクトへのハンドル。

[in] PhysicalAddress

マップする I/O 範囲の開始 64 ビット物理アドレスを指定します。

[in] NumberOfBytes

マップするバイト数を示す 0 より大きい値を指定します。

[in] CacheType

MEMORY_CACHING_TYPE値を指定します。これは、物理アドレス範囲のマップに使用するキャッシュ属性を示します。 MEMORY_CACHING_TYPE列挙型は Wdfdevice.h で定義されています。

[out] PseudoBaseAddress

擬似ベース アドレスへのポインターを受け取る場所のアドレス。

戻り値

操作が成功した場合、関数はSTATUS_SUCCESSを返します。

この関数は、他の NTSTATUS 値を返す場合があります。

注釈

この関数は、 IWDFDevice3::MapIoSpace に相当する UMDF バージョン 2 です。

ドライバーは、CM_PARTIAL_RESOURCE_DESCRIPTOR構造体で CmResourceTypeMemory 型の翻訳されたリソースを受け取る場合、デバイスの起動時にこの関数を呼び出 必要があります。 WdfDeviceMapIoSpace は、リソース リストで返される物理アドレスを、擬似ベース アドレスと呼ばれるフレームワークマネージド アドレスにマップします。

その後、ドライバーは擬似ベース アドレスを使用して、WDF_READ_REGISTER_Xxx 関数と WDF_WRITE_REGISTER_Xxx 関数を使用してデバイス レジスタにアクセスできます。

WdfDeviceMapIoSpace を呼び出すドライバーは、UmdfDirectHardwareAccess INF ディレクティブを AllowDirectHardwareAccess に設定する必要があります。

ドライバーが UmdfRegisterAccessMode INF ディレクティブを RegisterAccessUsingUserModeMapping に設定した場合、 WdfDeviceMapIoSpace を呼び出すと、指定された物理アドレス範囲も、 WdfDeviceGetHardwareRegisterMappedAddress を呼び出すことによってドライバーが後でアクセスできるユーザー モードのベース アドレス範囲にマップされます。

UMDF ドライバーで使用できる INF ディレクティブの詳細については、「 INF ファイルでの WDF ディレクティブの指定」を参照してください。

UMDF バージョン 2 以降のハードウェア リソースの解析の詳細については、「UMDF ドライバーでのハードウェア リソースの処理」を参照してください。

PHYSICAL_ADDRESS型は、次のように Wudfwdm.h で定義されます。

typedef LARGE_INTEGER PHYSICAL_ADDRESS;

ドライバーがメモリ マップされたレジスタ リソースを検索してマップする方法を示す例については、「 デバイス レジスタへの読み取りと書き込み」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 8.1
対象プラットフォーム ユニバーサル
最小 UMDF バージョン 2.0
Header wdfdevice.h (Wdf.h を含む)
Library WUDFx02000.lib
[DLL] WUDFx02000.dll
IRQL PASSIVE_LEVEL

こちらもご覧ください

IWDFDevice3::MapIoSpace

WdfDeviceUnmapIoSpace