NdisMRegisterDmaChannel 函式 (ndis.h)
NdisMRegisterDmaChannel 函式會在次級 NIC 或 ISA 總線主機 NIC 上的 DMA 作業初始化期間宣告系統 DMA 控制器通道。
語法
NDIS_STATUS NdisMRegisterDmaChannel(
[out] PNDIS_HANDLE MiniportDmaHandle,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] UINT DmaChannel,
[in] BOOLEAN Dma32BitAddresses,
[in] PNDIS_DMA_DESCRIPTION DmaDescription,
[in] ULONG MaximumLength
);
參數
[out] MiniportDmaHandle
呼叫端提供的變數指標,此函式會傳回迷你埠驅動程式在 NdisMXxx 系統 DMA 函式後續呼叫中使用的句柄。
[in] MiniportAdapterHandle
迷你埠配接器句柄輸入至 MiniportInitializeEx 函式。
[in] DmaChannel
忽略。 如果有任何,請在 DmaDescription 設定 DMA 通道。
[in] Dma32BitAddresses
布爾值,如果 NIC 有 32 個位址行,則為 TRUE 。 否則為 FALSE。
[in] DmaDescription
呼叫端填入之NDIS_DMA_DESCRIPTION結構的指標。 此結構的定義如下:
typedef struct _NDIS_DMA_DESCRIPTION {
BOOLEAN DemandMode;
BOOLEAN AutoInitialize;
BOOLEAN DmaChannelSpecified;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG DmaPort;
ULONG DmaChannel;
} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION;
驅動程式應該先以零初始化這個結構,再填入下列成員:
DemandMode
布爾值,如果從屬 NIC 使用系統 DMA 控制器的需求模式,則為 TRUE 。 否則為 FALSE。
AutoInitialize
布爾值,如果從屬 NIC 使用系統 DMA 控制器的自動初始化模式,則為 TRUE 。 否則為 FALSE。
DmaChannelSpecified
布爾值,如果 DmaChannel 設定為 NIC 所使用的系統 DMA 控制器通道總線相對值,則為 TRUE。 否則為 FALSE。
DmaWidth
DMA 作業的傳輸寬度、 Width8Bits、 Width16Bits 或 Width32Bits 的其中一個。
DmaSpeed
DMA 速度為相容、TypeA、TypeB 或 TypeC 的其中一個。
DmaPort
此成員是指不再支援的 MCA 總線。 這個成員必須是零。
DmaChannel
NIC 所使用的系統 DMA 控制器通道總線相對數目。
[in] MaximumLength
NIC 可以在單一 DMA 作業中傳輸的最大位元元數目。 如果 NIC 具有無限制的傳輸容量,請將此參數設定為 -1。
傳回值
NdisMRegisterDmaChannel 可以傳回下列其中一個狀態值:
傳回碼 | Description |
---|---|
|
NDIS 在登錄中針對呼叫端的 NIC 宣告指定的 DMA 通道,並針對迷你埠驅動程序後續的 DMA 作業設定必要的資源。 |
|
嘗試在登錄中宣告 DMA 通道失敗,可能是因為另一個驅動程式已經為其裝置宣告該通道。 NdisMRegisterDmaChannel 會在發生此錯誤時記錄錯誤。 |
|
NDIS 無法配置此迷你埠驅動程序支援 DMA 作業所需的系統資源。 |
|
總線類型或總線號碼超出範圍,或驅動程式將 NIC 宣告為 ISA 以外的 I/O 總線上的總線主機。 |
備註
從屬 DMA NIC 的驅動程式必須從其 MiniportInitializeEx 函式呼叫 NdisMRegisterDmaChannel,以保留後續 DMA 作業的系統資源,並在登錄中宣告它們。
ISA 總線主機 NIC 的驅動程式也必須從 MiniportInitializeEx 呼叫 NdisMRegisterDmaChannel,以宣告登錄中 NIC 的系統 DMA 控制器通道。
MiniportInitializeEx 必須呼叫在呼叫 NdisMRegisterDmaChannel 之前,NdisMSetMiniportAttributes 函式。
MiniportInitializeEx 從登錄或呼叫 NdisMGetBusData 函式,取得傳遞至 NdisMRegisterDmaChannel 的總線相對值。
如果這類驅動程式無法配置其裝置所需的系統 DMA 資源, MiniportInitializeEx 應該釋放它已配置給 NIC 的所有資源,然後,該 NIC 的初始化失敗。
如果驅動程式成功註冊 DMA 通道,則稍後必須呼叫 NdisMDeregisterDmaChannel 函式可取消註冊 DMA 通道。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 支援 NDIS 6.0 和 NDIS 5.1 驅動程式 (請參閱 Windows Vista 中的 NdisMRegisterDmaChannel (NDIS 5.1) ) 。 支援 NDIS 5.1 驅動程式, (請參閱 Windows XP 中的 NdisMRegisterDmaChannel (NDIS 5.1) ) 。 |
目標平台 | Universal |
標頭 | ndis.h (包括 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | Irql_Miniport_Driver_Function () |