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

指定呼叫端提供的變數,此變數會傳回 InitialPortNumberOfPorts 所指定之指定總線相對 I/O 連接埠範圍的對應基底虛擬位址。

[in] MiniportAdapterHandle

指定 MiniportInitializeEx 的句柄輸入。

[in] InitialPort

指定要對應之埠範圍的總線相對基位址。

[in] NumberOfPorts

指定要對應之範圍內的埠數目。

傳回值

NdisMRegisterIoPortRange 可以傳回下列其中一項:

傳回碼 Description
NDIS_STATUS_SUCCESS
指定的 I/O 連接埠範圍已成功對應,因此 PortOffset 的值有效,且對應範圍已在 NIC 的登錄中宣告。
NDIS_STATUS_RESOURCE_CONFLICT
嘗試宣告登錄中的 I/O 埠範圍失敗,可能是因為另一個驅動程式已經宣告其裝置的範圍。 NdisMRegisterIoPortRange 會在發生此錯誤時記錄錯誤。
NDIS_STATUS_RESOURCES
無法對應埠範圍,或 NDIS 無法配置資源來檢查登錄是否有硬體資源衝突。
NDIS_STATUS_FAILURE
總線類型或總線號碼超出範圍,或指定的 InitialPortNumberOfPorts 無效, (可能不在目前平臺) 的 I/O 埠空間內。

備註

迷你埠驅動程式會從其MiniportInitializeEx函式呼叫 NdisMRegisterIoPortRangeMiniportInitializeEx 必須呼叫在呼叫 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)

另請參閱

MiniportInitializeEx

NdisMDeregisterIoPortRange

NdisMMapIoSpace

NdisRawReadPortBufferUchar

NdisRawReadPortBufferUlong

NdisRawReadPortBufferUshort

NdisRawReadPortUchar

NdisRawReadPortUlong

NdisRawReadPortUshort

NdisRawWritePortBufferUchar

NdisRawWritePortBufferUlong

NdisRawWritePortBufferUshort

NdisRawWritePortUchar

NdisRawWritePortUlong

NdisRawWritePortUshort

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort