DMA_START_HANDLER 콜백 함수(netdma.h)

참고 NetDMA 인터페이스는 지원되지 않습니다.

Windows 8 이상에서

ProviderStartDma 함수는 지정된 DMA 채널에서 DMA 전송을 시작합니다.

구문

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

매개 변수

[in] ProviderChannelContext

DMA 채널의 컨텍스트 영역을 식별하는 포인터입니다. DMA 공급자는 의 pProviderChannelContext 매개 변수에 지정된 위치에서 NetDMA에 이 핸들을 반환했습니다. ProviderAllocateDmaChannel 함수입니다.

[in] DescriptorVirtualAddress

DMA 설명자의 연결된 목록에서 첫 번째 NET_DMA_DESCRIPTOR 구조체의 가상 주소에 대한 포인터입니다. 해당 물리적 주소는 DescriptorPhysicalAddress 매개 변수에 지정됩니다.

[in] DescriptorPhysicalAddress

DMA 설명자의 연결된 목록에 있는 첫 번째 DMA 설명자의 실제 주소에 대한 포인터입니다. 해당 가상 주소는 DescriptorVirtualAddress 매개 변수에 지정됩니다.

[in] DescriptorCount

DescriptorVirtualAddress 의 DMA 설명자 수입니다.

참고 NetDMA 버전 2.0 이전의 NetDMA 공급자 드라이버는 DescriptorCount 매개 변수를 무시할 수 있습니다. NetDMA 2.0 이상 버전의 경우 이 매개 변수는 DMA 작업의 설명자 수입니다.
 

반환 값

ProviderStartDma는 다음 상태 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
작업이 성공적으로 완료되었습니다.
STATUS_RESOURCES
리소스가 부족하여 작업이 실패했습니다.
STATUS_UNSUCCESSFUL
지정되지 않은 이유로 작업이 실패했습니다.

설명

NetDMA 인터페이스는 DMA 공급자 드라이버의 ProviderStartDma 함수를 호출하여 DMA 전송을 시작합니다. NetDMA 인터페이스는 DMA 채널이 할당된 후 언제든지 ProviderStartDma 를 호출할 수 있습니다. NetDMA 인터페이스는 ProviderAbortDma, ProviderResetChannel 또는 를 호출한 후 ProviderStartDma를 호출해야 합니다.DMA 채널에 대한 ProviderAllocateDmaChannel 함수입니다.

DMA 전송의 원본은 DMA 설명자의 연결된 목록입니다. DescriptorVirtualAddress 매개 변수에 있는 NET_DMA_DESCRIPTOR 구조체의 NextDescriptor 멤버는 연결된 목록에 있는 다음 NET_DMA_DESCRIPTOR 구조체의 실제 주소를 포함합니다.

참고 NetDMA 2.0 이상 버전에서 설명자의 연결된 목록은 NULL로 종료되지 않습니다. 연결된 목록의 마지막 설명자에 있는 NextDescriptor 멤버는 ProviderAppendDma 함수에 대한 후속 호출에서 사용할 NET_DMA_DESCRIPTOR 구조체의 실제 주소를 지정합니다. NetDMA 2.0 공급자 드라이버는 NextDescriptor 에서 주소를 캐시하고 이 주소를 다음 추가 작업의 연결된 목록의 시작 부분으로 사용할 수 있습니다.
 
시작 작업을 수행하려면 DMA 공급자가 현재 설명자에 대한 처리를 완료한 후 기존 DMA 설명자 목록(있는 경우)을 무시해야 합니다. DMA 공급자는 현재 NET_DMA_DESCRIPTOR 구조에서 NextDescriptor 멤버를 무시하고 ProviderStartDma 에서 지정하는 설명자를 로드해야 합니다.

ProviderStartDma가 초기 DMA 전송을 시작한 후 NetDMA 인터페이스는 ProviderAppendDma 함수를 호출하여 전송에 추가 데이터를 추가할 수 있습니다.

NetDMA는 IRQL <= DISPATCH_LEVEL ProviderStartDma를 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2008에서 NetDMA 2.0 드라이버에 대해 지원됩니다. Windows Server 2008에서 NetDMA 1.1 드라이버에 대해 지원됩니다. Windows Server 2008 및 Windows Vista에서 NetDMA 1.0 드라이버에 대해 지원됩니다.
대상 플랫폼 Windows
헤더 netdma.h(Netdma.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel