NdisMRegisterDmaChannel 함수(ndis.h)

NdisMRegisterDmaChannel 함수는 종속 NIC 또는 ISA 버스 master 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;

드라이버는 다음 멤버를 채우기 전에 0으로 이 구조를 초기화해야 합니다.

DemandMode

하위 NIC가 시스템 DMA 컨트롤러의 수요 모드를 사용하는 경우 TRUE 인 부울 값입니다. 그렇지 않으면 FALSE입니다.

자동 초기화

하위 NIC가 시스템 DMA 컨트롤러의 자동 초기화 모드를 사용하는 경우 TRUE 인 부울 값입니다. 그렇지 않으면 FALSE입니다.

DmaChannelSpecified

DmaChannel이 NIC에서 사용하는 시스템 DMA 컨트롤러 채널의 버스 상대 값으로 설정된 경우 TRUE인 부울 값입니다. 그렇지 않으면 FALSE입니다.

DmaWidth

DMA 작업의 전송 너비, Width8Bits, Width16Bits 또는 Width32Bits 중 하나입니다.

DmaSpeed

DMA 속도는 호환, TypeA, TypeB 또는 TypeC 중 하나입니다.

DmaPort

이 멤버는 더 이상 지원되지 않는 MCA 버스를 참조합니다. 이 멤버는 0이어야 합니다.

DmaChannel

NIC에서 사용하는 시스템 DMA 컨트롤러 채널의 버스 상대 수입니다.

[in] MaximumLength

단일 DMA 작업에서 NIC가 전송할 수 있는 최대 바이트 수입니다. NIC에 무제한 전송 용량이 있는 경우 이 매개 변수를 -1로 설정합니다.

반환 값

NdisMRegisterDmaChannel은 다음 상태 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
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 버스에서 master 버스로 선언했습니다.

설명

하위 DMA NIC의 드라이버는 MiniportInitializeEx 함수에서 NdisMRegisterDmaChannel을 호출하여 후속 DMA 작업에 대한 시스템 리소스를 예약하고 레지스트리에서 클레임해야 합니다.

또한 ISA 버스 master NIC의 드라이버는 MiniportInitializeEx에서 NdisMRegisterDmaChannel을 호출하여 레지스트리의 NIC에 대한 시스템 DMA 컨트롤러 채널을 요청해야 합니다.

MiniportInitializeEx는 다음을 호출해야 합니다.NdisMRegisterDmaChannel을 호출하기 전에 NdisMSetMiniportAttributes 함수입니다.

MiniportInitializeEx는 레지스트리에서 또는 NdisMGetBusData 함수를 호출하여 NdisMRegisterDmaChannel에 전달된 버스 상대 값을 가져옵니다.

이러한 드라이버가 디바이스에 필요한 시스템 DMA 리소스를 할당할 수 없는 경우 MiniportInitializeEx 는 이미 NIC에 할당된 모든 리소스를 해제한 다음 해당 NIC에 대한 초기화에 실패해야 합니다.

드라이버가 DMA 채널을 성공적으로 등록하는 경우 나중에 를 호출해야 합니다.DMA 채널을 등록 취소하는 NdisMDeregisterDmaChannel 함수입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버에 대해 지원됩니다(NdisMRegisterDmaChannel(NDIS 5.1 참조)). Windows XP에서 NDIS 5.1 드라이버(NdisMRegisterDmaChannel(NDIS 5.1) 참조)에 대해 지원됩니다.
대상 플랫폼 유니버설
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 Irql_Miniport_Driver_Function(ndis)

추가 정보

MiniportInitializeEx

NdisMDeregisterDmaChannel

NdisMGetBusData

NdisMSetMiniportAttributes