NdisMMapIoSpace 関数 (ndis.h)

NdisMMapIoSpace は、特定のバス相対 "物理" 範囲のデバイス RAM またはレジスタをシステム空間の仮想範囲にマップします。

構文

NDIS_STATUS NdisMMapIoSpace(
  [out] PVOID                 *VirtualAddress,
  [in]  NDIS_HANDLE           MiniportAdapterHandle,
  [in]  NDIS_PHYSICAL_ADDRESS PhysicalAddress,
  [in]  UINT                  Length
);

パラメーター

[out] VirtualAddress

呼び出しが成功した場合に変換された仮想アドレスに設定される呼び出し元が指定した変数へのポインター。

[in] MiniportAdapterHandle

MiniportInitializeEx へのハンドル入力を指定します。

[in] PhysicalAddress

マップするデバイス メモリ範囲のバス相対ベース物理アドレスを指定します。

[in] Length

マップするバイト数を指定します。

戻り値

NdisMMapIoSpace は、次のいずれかの状態値を返すことができます。

リターン コード 説明
NDIS_STATUS_SUCCESS
デバイス メモリ範囲が正常にマップされたため、 VirtualAddress の値が有効であり、NIC のレジストリでマップされた範囲が要求されました。
NDIS_STATUS_RESOURCE_CONFLICT
別のドライバーがそのデバイスの範囲を既に要求している可能性があるため、レジストリ内のデバイス メモリ範囲を要求しようとしましたが失敗しました。 NdisMMapIoSpace では、これが発生した場合にエラーがログに記録されます。
NDIS_STATUS_RESOURCES
メモリをマップできなかったか、十分な仮想メモリを割り当てられなかった。
NDIS_STATUS_FAILURE
バスの種類またはバス番号が範囲外であるか、指定された PhysicalAddressLength が無効でした (現在のプラットフォームの I/O 領域内にない可能性があります)。

注釈

この関数は、オンボード メモリまたはデバイス レジスタのバンクがホストの I/O 空間に表示されている NIC のドライバーによって呼び出されます。 たとえば、PIO を使用する NIC のドライバーは NdisMMapIoSpace を呼び出します。

NdisMMapIoSpace の呼び出しが成功すると、ドライバーの NIC のレジストリ内のハードウェア リソースが要求されます。 したがって、 ミニポートInitializeEx 関数のみが NdisMMapIoSpace を呼び出します。

NdisMMapIoSpace は、NDIS_STATUS_SUCCESSを返さない場合、 VirtualAddress の変数を NULL に設定します。

MiniportInitializeEx は、ドライバーのパラメーター レジストリ キーから PhysicalAddress 値を取得するか、バスの種類に固有の NdisXxx 構成関数を呼び出すことによって取得します。 指定された物理アドレス範囲は、現在のプラットフォームの I/O 空間内に含まれている必要があります。 ホスト物理メモリ アドレスを使用して NdisMMapIoSpace を 呼び出すプログラミング エラーです。

ミニポート ドライバーは、NIC がコンピューターから削除された場合、および/またはドライバーがアンロードされている場合、ミニポート ドライバーは、その後 NIC の初期化に失敗した場合に、システム リソースに対する要求を解放するには、逆の NdisMUnmapIoSpace を呼び出す必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「NdisMMapIoSpace (NDIS 5.1)」を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (「NdisMMapIoSpace (NDIS 5.1)」を参照) でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis)

こちらもご覧ください

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort