次の方法で共有


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 は、リソース リストで返された物理アドレスを、擬似ベース アドレスと呼ばれるフレームワークマネージド アドレスにマップします。

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

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
ヘッダー wdfdevice.h (Wdf.h を含む)
ライブラリ WUDFx02000.lib
DLL WUDFx02000.dll
IRQL PASSIVE_LEVEL

関連項目

IWDFDevice3::MapIoSpace

WdfDeviceUnmapIoSpace の