NdisMRegisterIoPortRange 函式 (ndis.h)
NdisMRegisterIoPortRange 使用 NdisRawReadPortXxx 和 NdisRawWritePortXxx 函式設定裝置 I/O 連接埠的存取權,並宣告該驅動程式 NIC 登錄中的 I/O 連接埠地址範圍。
語法
NDIS_STATUS NdisMRegisterIoPortRange(
[out] PVOID *PortOffset,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] UINT InitialPort,
[in] UINT NumberOfPorts
);
參數
[out] PortOffset
指定呼叫端提供的變數,此變數會傳回 InitialPort 和 NumberOfPorts 所指定之指定總線相對 I/O 連接埠範圍的對應基底虛擬位址。
[in] MiniportAdapterHandle
指定 MiniportInitializeEx 的句柄輸入。
[in] InitialPort
指定要對應之埠範圍的總線相對基位址。
[in] NumberOfPorts
指定要對應之範圍內的埠數目。
傳回值
NdisMRegisterIoPortRange 可以傳回下列其中一項:
傳回碼 | Description |
---|---|
|
指定的 I/O 連接埠範圍已成功對應,因此 PortOffset 的值有效,且對應範圍已在 NIC 的登錄中宣告。 |
|
嘗試宣告登錄中的 I/O 埠範圍失敗,可能是因為另一個驅動程式已經宣告其裝置的範圍。 NdisMRegisterIoPortRange 會在發生此錯誤時記錄錯誤。 |
|
無法對應埠範圍,或 NDIS 無法配置資源來檢查登錄是否有硬體資源衝突。 |
|
總線類型或總線號碼超出範圍,或指定的 InitialPort 和 NumberOfPorts 無效, (可能不在目前平臺) 的 I/O 埠空間內。 |
備註
迷你埠驅動程式會從其MiniportInitializeEx函式呼叫 NdisMRegisterIoPortRange。 MiniportInitializeEx 必須呼叫在呼叫 NdisMRegisterIoPortRange 之前,NdisMSetMiniportAttributes。
NdisMRegisterIoPortRange 會對應總線相對裝置位址範圍,迷你埠驅動程式可藉由呼叫 NdisRawXxx 函式來存取 NIC 上的 I/O 埠範圍。 成功的呼叫會宣告呼叫端 NIC 登錄中指定的 I/O 埠範圍。
由於傳遞至 NdisRawXxx 的參數已對應,因此這些函式的執行速度明顯比對應的 NdisImmediate 快。埠Xxx。 成功呼叫 NdisMRegisterIoPortRange 之後,迷你埠驅動程式無法呼叫任何 NdisImmediate。。埠Xxx 函式具有總線相對位址或這類I/O埠範圍內對應的虛擬位址。
如果 對 NdisMRegisterIoPortRange 的呼叫失敗, MiniportInitializeEx 應該釋放它已配置給 NIC 的所有資源,然後失敗初始化該 NIC。
在主機記憶體空間中具有裝置緩存器之 NdisMMapIoSpace 的驅動程式會呼叫 NdisMMapIoSpace ,然後 NdisRead/WriteRegisterXxx 函式來存取 NIC 緩存器。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | (支援 NDIS 6.0 和 NDIS 5.1 驅動程式,請參閱 Windows Vista 中的 NdisMRegisterIoPortRange (NDIS 5.1) ) 。 (支援 NDIS 5.1 驅動程式,請參閱 Windows XP 中的 NdisMRegisterIoPortRange (NDIS 5.1) ) 。 |
目標平台 | Universal |
標頭 | ndis.h (包含 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | Irql_Miniport_Driver_Function (ndis) 、 NdisMRegisterIoPortRange (ndis) |