共用方式為


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 可以傳回下列任何狀態值:

傳回碼 Description
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 登錄中的硬體資源。 因此,只有 MiniportInitializeEx 函式會呼叫 NdisMMapIoSpace

NdisMMapIoSpace 如果變數未傳回NDIS_STATUS_SUCCESS, 則會將 VirtualAddress 上的變數設定為 NULL

MiniportInitializeEx 可從驅動程式的參數登錄機碼或呼叫總線類型特定的 NdisXxx 組態函式,取得 PhysicalAddress 值。 指定的實體位址範圍必須落在目前平臺的 I/O 空間內。 呼叫具有主機實體記憶體位址 的 NdisMMapIoSpace 是程式設計錯誤。

如果 MiniportInitializeEx 後續無法初始化 NIC,則迷你埠驅動程式必須呼叫倒數 NdisMUnmapIoSpace,以在系統資源上釋放其宣告;如果 NIC 已從計算機中移除,則為/或當驅動程式卸除時。

規格需求

需求
最低支援的用戶端 支援 NDIS 6.0 和 NDIS 5.1 驅動程式, (請參閱 Windows Vista 中的 NdisMMapIoSpace (NDIS 5.1) ) 。 支援 NDIS 5.1 驅動程式 (請參閱 Windows XP 中的 NdisMMapIoSpace (NDIS 5.1) ) 。
目標平台 Universal
標頭 ndis.h (包括 Ndis.h)
程式庫 Ndis.lib
IRQL PASSIVE_LEVEL
DDI 合規性規則 Irql_Miniport_Driver_Function (ndis) NdisMMapIoSpace (ndis)

另請參閱

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort