NdisMSetupDmaTransfer 매크로(ndis.h)

NdisMSetupDmaTransfer 함수는 DMA 전송을 위해 호스트 DMA 컨트롤러를 설정합니다.

구문

void NdisMSetupDmaTransfer(
   _S,
   _H,
   _B,
   _O,
   _L,
   _M_
);

매개 변수

_S

이 함수가 요청의 상태 반환하는 호출자 제공 변수에 대한 포인터로, 다음 중 하나일 수 있습니다.

NDIS_STATUS_SUCCESS

DMA 컨트롤러는 데이터 무결성을 유지하기 위해 디바이스에서 또는 디바이스에서 플러시된 지정된 데이터를 전송하도록 설정되었습니다.

NDIS_STATUS_RESOURCES

MiniportDmaHandle로 지정된 채널이 현재 데이터 전송을 사용 중이거나 지정된 Length가 유효하지 않으므로 전송에 대한 DMA 컨트롤러를 설정하지 못했습니다.

_H

초기화 중에 NdisMRegisterDmaChannel 함수에서 반환된 DMA 핸들입니다.

_B

데이터가 전송될 호스트 메모리의 범위를 매핑하는 버퍼 설명자에 대한 포인터입니다.

_O

전송을 시작해야 하는 매핑된 버퍼 내의 바이트 오프셋입니다. 0은 버퍼 에 지정된 범위의 초기 바이트에서 전송을 시작해야 했음을 나타냅니다.

_L

전송할 데이터 바이트 수입니다. OffsetLength로 지정된 범위는 버퍼 에 지정된 의 적절한 하위 범위여야 합니다.

_M_

시스템에서 NIC를 통한 아웃바운드 전송에 대해 TRUE 인 부울 값입니다. 그렇지 않으면 FALSE입니다.

반환 값

없음

설명

하위 DMA NIC의 드라이버는 들어오는 송신 요청에 대한 응답으로 NdisMSetupDmaTransfer 를 호출하며, 드라이버는 WriteToDeviceTRUE로 설정합니다. NIC에서 받은 데이터를 호스트 메모리로 전송할 때 WriteToDeviceFALSE 로 설정합니다.

NdisMSetupDmaTransfer의 호출자는 전송 대상이거나 호스트에서 NIC로의 다운로드 작업에 대한 데이터를 포함하는 호스트 메모리 범위를 매핑하는 버퍼 설명자를 제공합니다. NIC의 DMA 제약 조건에 맞게 크기가 조정된 전송을 지정하기 위해 호출자는 필요한 경우 OffsetLength 매개 변수를 사용하여 전송할 하위 범위를 설정할 수 있습니다.

WriteToDeviceFALSE일 때 수신된 데이터가 NIC에서 전송될 호스트 범위를 지정하는 버퍼 설명자를 호출자에게 제공해야 합니다. 그렇지 않으면 Buffer 의 버퍼 설명자가 미니포트 드라이버의 패킷 설명자 입력에 연결되었습니다. MiniportSendNetBufferLists 함수입니다 .

길이가 256바이트 미만인 송신 요청과 같은 작은 전송 요청의 성능을 향상시키기 위해 미니포트 드라이버는 패킷 데이터를 내부 스테이징 버퍼에 복사하고 해당 버퍼를 NdisMSetupDmaTransfer에 매핑하는 드라이버 할당 버퍼 설명자를 전달할 수 있습니다.

NdisMSetupDmaTransfer에서 돌아오면 호스트 DMA 컨트롤러가 전송을 위해 프로그래밍되었습니다. 그런 다음 미니포트 드라이버는 전송 작업을 위해 NIC를 프로그래밍합니다.

전송이 완료되면 미니포트 드라이버는 다음을 호출해야 합니다. NdisMCompleteDmaTransfer 함수입니다.

요구 사항

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

추가 정보

MiniportSendNetBufferLists

NdisMCompleteDmaTransfer

NdisMRegisterDmaChannel