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