다음을 통해 공유


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

버스 마스터 어댑터를 나타내는 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 실행되므로 컨텍스트 가리키는 데이터는 페이징되지 않은 메모리에 있어야 합니다.

[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