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 可以傳回下列任何狀態值:
傳回碼 | 描述 |
---|---|
|
裝置記憶體範圍已成功對應,因此 VirtualAddress 的值有效,而且已宣告 NIC 登錄中的對應範圍。 |
|
嘗試宣告登錄中的裝置記憶體範圍失敗,可能是因為另一個驅動程式已經宣告其裝置的範圍。 NdisMMapIoSpace 如果發生這種情況,就會記錄錯誤。 |
|
無法對應記憶體,或無法配置足夠的虛擬記憶體。 |
|
總線類型或總線號碼超出範圍,或指定的 PhysicalAddress 和 Length 無效(可能不在目前平臺的 I/O 空間內)。 |
言論
此函式是由 NIC 的驅動程式所呼叫,這些驅動程式具有內建記憶體或裝置快取器銀行出現在主機的 I/O 空間中。 例如,使用 PIO 呼叫的 NIC 驅動程式 NdisMMapIoSpace。
成功呼叫 NdisMMapIoSpace 會宣告驅動程式 NIC 登錄中的硬體資源。 因此,只有 MiniportInitializeEx 函式會呼叫 NdisMMapIoSpace。
NdisMMapIoSpace 如果變數未傳回NDIS_STATUS_SUCCESS,VirtualAddress 設定為 NULL。
MiniportInitializeEx 會從驅動程式的 Parameters 登錄機碼,或呼叫總線類型特定的 NdisXxx 組態函式,取得 PhysicalAddress 值。 指定的實體位址範圍必須落在目前平臺的 I/O 空間內。 使用主機物理記憶體位址呼叫 NdisMMapIoSpace 是程式設計錯誤。
如果 MiniportInitializeEx 後續無法初始化 NIC,則迷你埠驅動程式必須呼叫倒數 NdisMUnmapIoSpace,才能在系統資源上釋放其宣告。如果 NIC 已從計算機移除,以及/或當驅動程式卸除時,
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 支援 Windows Vista 中的 NDIS 6.0 和 NDIS 5.1 驅動程式(請參閱 NdisMMapIoSpace (NDIS 5.1)。 支援 Windows XP 中的 NDIS 5.1 驅動程式(請參閱 NdisMMapIoSpace (NDIS 5.1)。 |
目標平臺 | 普遍 |
標頭 | ndis.h (包括 Ndis.h) |
連結庫 | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | Irql_Miniport_Driver_Function(ndis),NdisMMapIoSpace(ndis) |