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

[out] DmaTransferContext

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

반환 값

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

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

설명

InitializeDmaTransferContext는 이름으로 직접 호출할 수 있는 시스템 루틴이 아닙니다. 이 루틴은 DMA_OPERATIONS 구조에서 반환된 주소의 포인터로만 호출할 수 있습니다 . 드라이버는 DeviceDescription 매개 변수의 Version 멤버가 DEVICE_DESCRIPTION_VERSION3 설정된 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