VideoPortStartDma 함수(video.h)

VideoPortStartDma 함수는 DMA 작업을 위해 시스템을 준비합니다. 적절한 리소스를 사용할 수 있는 즉시 VideoPortStartDma 는 분산/수집 목록을 만들고 시스템 리소스를 초기화하며 비디오 미니포트 드라이버 제공 HwVidExecuteDma 루틴을 호출하여 DMA 작업을 수행합니다.

구문

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortStartDma(
  [in]      IN PVOID           HwDeviceExtension,
  [in]      IN PVP_DMA_ADAPTER VpDmaAdapter,
  [in]      IN PVOID           Mdl,
  [in]      IN ULONG           Offset,
  [in, out] IN OUT PULONG      pLength,
  [in]      IN PEXECUTE_DMA    ExecuteDmaRoutine,
  [in]      IN PVOID           Context,
  [in]      IN BOOLEAN         WriteToDevice
);

매개 변수

[in] HwDeviceExtension

미니포트 드라이버의 디바이스 확장에 대한 포인터입니다.

[in] VpDmaAdapter

버스 master 어댑터를 나타내는 VP_DMA_ADAPTER 구조체에 대한 포인터입니다. 이 구조체는 VideoPortGetDmaAdapter 호출에서 반환됩니다.

[in] Mdl

버퍼를 설명하는 MDL 에 대한 포인터입니다. 이 포인터는 비디오 포트 드라이버의 VideoPortLockBuffer 함수 호출에서 반환됩니다.

[in] Offset

DMA 작업이 시작되는 버퍼의 바이트 오프셋을 지정합니다. Mdl 매개 변수는 이 버퍼를 설명합니다.

[in, out] pLength

요청된 전송 크기(바이트)를 지정하고 전송할 실제 크기를 받는 변수에 대한 포인터입니다. 다음 이벤트 중 하나가 발생하면 변수가 업데이트됩니다. VideoPortStartDma 가 반환되거나 HwVidExecuteDma 가 호출됩니다. 따라서 VideoPortStartDma가 반환되기 전에 HwVidExecuteDma 내에서 이 변수를 읽어도 안전합니다.

[in] ExecuteDmaRoutine

미니포트 드라이버 제공 HwVidExecuteDma 콜백 루틴에 대한 포인터입니다. VideoPortStartDma 는 이 루틴을 호출하여 하드웨어 레지스터를 프로그래밍하고 실제 DMA 작업을 시작합니다.

[in] Context

미니포트 드라이버의 HwVidExecuteDma 콜백 루틴에 전달할 드라이버 결정 컨텍스트에 대한 포인터입니다. HwVidExecuteDma 콜백 루틴은 DISPATCH_LEVEL 실행되므로 Context가 가리키는 데이터는 페이지가 없는 메모리에 있어야 합니다.

[in] WriteToDevice

DMA 전송 방향을 지정합니다. TRUE 값은 버퍼에서 디바이스로의 전송을 표시하고 FALSE 값은 디바이스에서 버퍼로의 전송을 나타냅니다.

반환 값

VideoPortStartDma는 다음 상태 코드 중 하나를 반환합니다.

반환 코드 설명
NO_ERROR 작업이 성공적으로 수행되었습니다.
ERROR_NOT_ENOUGH_MEMORY 이 작업에 대한 시스템 리소스가 충분하지 않습니다.

설명

DMA 전송 작업을 준비하려면 VideoPortStartDma:

  • 호스트 프로세서의 캐시에서 메모리 영역을 플러시합니다.
  • 분산/수집 목록을 빌드합니다.
  • 비디오 미니포트 드라이버의 HwVidExecuteDma 콜백을 호출합니다.
전송된 실제 메모리 양이 드라이버에서 사용할 수 있는 맵 레지스터 수에 의해 제한되기 때문에 요청된 데이터가 모두 전송되지 않았을 수 있습니다. 이 함수의 호출자는 pLength 에서 반환된 실제 전송 크기를 검사하여 추가 데이터를 전송할지 여부를 확인해야 합니다. 이 경우 미니포트 드라이버는 전체 전송 요청을 이행하기 위해 필요한 만큼 VideoPortStartDma (그리고 이후에 VideoPortCompleteDma)를 호출해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 video.h(Video.h 포함)
라이브러리 Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

추가 정보

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter