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 |
---|---|
|
裝置記憶體範圍已成功對應,因此 VirtualAddress 上的值有效,且對應範圍已在 NIC 的登錄中宣告。 |
|
嘗試宣告登錄中的裝置記憶體範圍失敗,可能是因為另一個驅動程式已經宣告其裝置的範圍。 如果發生此錯誤,NdisMMapIoSpace 會記錄錯誤。 |
|
記憶體無法對應,或無法配置足夠的虛擬記憶體。 |
|
總線類型或總線號碼超出範圍,或指定的 PhysicalAddress 和 Length 無效, (可能不在目前平臺的 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) |