共用方式為


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 作業的傳輸寬度、 Width8BitsWidth16BitsWidth32Bits 的其中一個。

DmaSpeed

DMA 速度為相容TypeATypeB 或 TypeC 的其中一個。

DmaPort

此成員是指不再支援的 MCA 總線。 這個成員必須是零。

DmaChannel

NIC 所使用的系統 DMA 控制器通道總線相對數目。

[in] MaximumLength

NIC 可以在單一 DMA 作業中傳輸的最大位元元數目。 如果 NIC 具有無限制的傳輸容量,請將此參數設定為 -1。

傳回值

NdisMRegisterDmaChannel 可以傳回下列其中一個狀態值:

傳回碼 Description
NDIS_STATUS_SUCCESS
NDIS 在登錄中針對呼叫端的 NIC 宣告指定的 DMA 通道,並針對迷你埠驅動程序後續的 DMA 作業設定必要的資源。
NDIS_STATUS_RESOURCE_CONFLICT
嘗試在登錄中宣告 DMA 通道失敗,可能是因為另一個驅動程式已經為其裝置宣告該通道。 NdisMRegisterDmaChannel 會在發生此錯誤時記錄錯誤。
NDIS_STATUS_RESOURCES
NDIS 無法配置此迷你埠驅動程序支援 DMA 作業所需的系統資源。
NDIS_STATUS_FAILURE
總線類型或總線號碼超出範圍,或驅動程式將 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 ()

另請參閱

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes