DMA_CHANNEL_ALLOCATE_HANDLER 콜백 함수(netdma.h)

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

Windows 8 이상에서

 
ProviderAllocateDmaChannel 함수는 DMA 채널을 할당합니다.

구문

DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;

NTSTATUS DmaChannelAllocateHandler(
  [in]  PVOID ProviderContext,
  [in]  PNET_DMA_CHANNEL_PARAMETERS ChannelParameters,
  [in]  PVOID NetDmaChannelHandle,
  [out] PVOID *pProviderChannelContext
)
{...}

매개 변수

[in] ProviderContext

DMA 공급자의 컨텍스트 영역을 식별하는 포인터입니다. DMA 공급자 드라이버는 에 대한 호출에서 이 핸들을 NetDMA 인터페이스에 전달합니다. NetDmaRegisterProvider 함수입니다.

[in] ChannelParameters

에 대한 포인터입니다. DMA 채널에 대한 구성 매개 변수를 정의하는 NET_DMA_CHANNEL_PARAMETERS 구조체입니다.

[in] NetDmaChannelHandle

DMA 채널을 식별하는 핸들입니다. 공급자 드라이버는 이 핸들을 NetDmaXxx 함수에 전달하여 DMA 채널을 식별합니다.

[out] pProviderChannelContext

DMA 채널에 대한 DMA 공급자의 컨텍스트 영역에 대한 포인터인 값에 대한 포인터입니다. DMA 공급자 드라이버는 ProviderAllocateDmaChannel에서 반환하기 전에 이 컨텍스트 영역을 할당합니다. NetDMA는 공급자 채널 컨텍스트가 필요한 ProviderXxx 함수에 컨텍스트 영역 포인터를 전달합니다.

반환 값

ProviderAllocateDmaChannel은 다음 상태 값 중 하나를 반환합니다.

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

설명

NetDMA 인터페이스는 DMA 공급자 드라이버의 ProviderAllocateDmaChannel 함수를 호출하여 DMA 채널을 할당합니다. NetDMA 인터페이스는 DMA 채널을 사용하기 전에 ProviderAllocateDmaChannel 을 호출합니다.

DMA 공급자 드라이버는 의 ProcessorAffinityMask 멤버에 지정된 비트와 일치하는 인터럽트 CPU 선호도를 사용하여 DMA 채널을 할당하려고 시도합니다.channelParameters 매개 변수의 구조체를 NET_DMA_CHANNEL_PARAMETERS. MSI-X가 지원되지 않거나 MSI-X가 지원되지만 인터럽트 CPU 선호도가 일치하는 DMA 채널을 사용할 수 없는 경우 DMA 공급자 드라이버는 사용 가능한 DMA 채널을 할당하고 KeSetTargetProcessorDpc 루틴을 호출하여 지정된 선호도 마스크 비트 중 하나와 일치하도록 인터럽트 DPC의 대상 CPU를 설정합니다.

DMA 공급자는 항상 DMA 채널의 인터럽트 DPC와 연결된 CPU 번호를 NET_DMA_CHANNEL_PARAMETERS 구조의 CpuNumber 멤버에 있는 NetDMA 인터페이스로 반환합니다.

DMA 공급자 드라이버는 ProviderAllocateDmaChannelpProviderChannelContext 매개 변수에서 드라이버 할당 컨텍스트 정보 블록에 대한 포인터를 제공합니다. 이 컨텍스트 영역은 DMA 채널에 대한 정보를 저장합니다. NetDMA 인터페이스는 DMA 채널 컨텍스트가 필요한 ProviderXxx 함수에 대한 후속 호출에서 컨텍스트 정보를 전달합니다.

NetDMA 인터페이스가 ProviderAllocateDmaChannel을 호출하면 NetDmaChannelHandle 매개 변수에서 핸들을 제공합니다. DMA 공급자 드라이버는 DMA 채널과 연결된 NetDmaXxx 함수에 대한 후속 호출에서 이 핸들을 사용합니다.

NetDMA 인터페이스는 ProviderFreeDmaChannel 함수를 호출하여 이전에 할당된 DMA 채널을 해제합니다.

NetDMA는 IRQL <= DISPATCH_LEVEL ProviderAllocateDmaChannel을 호출합니다.

요구 사항

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

추가 정보

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel