다음을 통해 공유


PINITIALIZE_DMA_TRANSFER_CONTEXT 콜백 함수(wdm.h)

InitializeDmaTransferContext 루틴은 DMA 리소스의 보류 중인 할당을 추적하는 데 사용되는 불투명 DMA 전송 컨텍스트를 초기화합니다.

통사론

PINITIALIZE_DMA_TRANSFER_CONTEXT PinitializeDmaTransferContext;

NTSTATUS PinitializeDmaTransferContext(
  [in]  PDMA_ADAPTER DmaAdapter,
  [out] PVOID DmaTransferContext
)
{...}

매개 변수

[in] DmaAdapter

DMA_ADAPTER 구조체에 대한 포인터입니다. 이 구조는 드라이버의 버스 마스터 DMA 디바이스 또는 시스템 DMA 채널을 나타내는 어댑터 개체입니다. 호출자는 IoGetDmaAdapter 루틴에 대한 이전 호출에서 이 포인터를 얻었습니다.

[out] DmaTransferContext

InitializeDmaTransferContext DMA 전송 컨텍스트에 대한 초기 값을 쓰는 호출자 할당 버퍼에 대한 포인터입니다. 이 컨텍스트는 호출자에게 불투명합니다. 호출자는 DMA 전송 컨텍스트를 포함할 수 있을 만큼 큰 버퍼를 할당해야 합니다. 이 컨텍스트의 크기(바이트)는 Wdm.h 헤더 파일의 DMA_TRANSFER_CONTEXT_SIZE_V1 상수에 의해 지정됩니다.

반환 값

InitializeDmaTransferContext 호출에 성공하면 STATUS_SUCCESS 반환합니다. 가능한 오류 반환 값에는 다음 상태 코드가 포함됩니다.

반환 코드 묘사
STATUS_INVALID_PARAMETERS
호출자가 전달한 잘못된 매개 변수 값으로 인해 이 루틴이 실패했습니다.

발언

InitializeDmaTransferContext 이름으로 직접 호출할 수 있는 시스템 루틴이 아닙니다. 이 루틴은 DMA_OPERATIONS 구조에서 반환된 주소의 포인터로만 호출할 수 있습니다. 드라이버는 DEVICE_DESCRIPTION_VERSION3 설정된 DeviceDescription 매개 변수의 Version 멤버를 사용하여 IoGetDmaAdapter 호출하여 이 루틴의 주소를 가져옵니다. IoGetDmaAdapterNULL반환하는 경우 플랫폼에서 루틴을 사용할 수 없습니다.

초기화된 DMA 전송 컨텍스트는 AllocateAdapterChannelEx, GetScatterGatherListEx또는 BuildScatterGatherListEx 루틴에 대한 매개 변수로 제공되어야 합니다. 이러한 각 루틴은 요청된 DMA 리소스 할당에 대한 정보를 DMA 전송 컨텍스트에 씁니다. 이 정보는 호출자에게 불투명합니다. 보류 중인 할당 요청을 취소하려면 호출자가 요청에 대한 DMA 전송 컨텍스트를 CancelAdapterChannel 루틴에 제공해야 합니다.

AllocateAdapterChannelEx , GetScatterGatherListEx또는 BuildScatterGatherListEx제공된 DMA 전송 컨텍스트는 모든 어댑터 할당 요청에서 고유해야 합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 8부터 사용할 수 있습니다.
대상 플랫폼 바탕 화면
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
IRQL <= DISPATCH_LEVEL

참고 항목

AllocateAdapterChannelEx

BuildScatterGatherListEx

CancelAdapterChannel

DMA_ADAPTER

DMA_OPERATIONS

getScatterGatherListEx

IoGetDmaAdapter