DXGKDDI_PATCH 콜백 함수(d3dkmddi.h)

DxgkDdiPatch 함수는 DMA 버퍼가 그래픽 하드웨어에 제출되기 전에 지정된 DMA(직접 메모리 액세스) 버퍼에 실제 주소를 할당합니다.

구문

DXGKDDI_PATCH DxgkddiPatch;

NTSTATUS DxgkddiPatch(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PATCH pPatch
)
{...}

매개 변수

[in] hAdapter

디스플레이 어댑터와 연결된 컨텍스트 블록에 대한 핸들입니다. 디스플레이 미니포트 드라이버는 이전에 DxgkDdiAddDevice 함수의 MiniportDeviceContext 출력 매개 변수에서 Microsoft DirectX 그래픽 커널 하위 시스템에 이 핸들을 제공했습니다.

[in] pPatch

물리적 주소로 패치할 DMA 버퍼를 설명하는 DXGKARG_PATCH 구조체에 대한 포인터입니다.

반환 값

성공적으로 완료되면 STATUS_SUCCESS 반환합니다. 드라이버가 오류 코드를 반환하는 경우 운영 체제에서 시스템 버그 검사가 발생합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

설명

DxgkDdiPatch 함수는 DMA 버퍼에 실제 주소를 할당해야 합니다. 따라서 디스플레이 미니포트 드라이버가 DMA 버퍼를 생성할 때 드라이버는 DMA 버퍼에서 실제 주소를 처리하는 데 필요한 명령을 삽입할 수 있는 공간을 확보해야 합니다. 실제 주소는 비디오 메모리, AGP/PCI Express 메모리 또는 시스템 메모리에 해당할 수 있습니다.

드라이버는 pPatch 매개 변수가 가리키는 DXGKARG_PATCH 구조체의 pPatchLocationList 멤버에서 제공된 패치 위치 목록을 검사하여 물리적 주소로 패치해야 하는 DMA 버퍼의 위치를 식별해야 합니다. 제공된 할당 목록(DXGKARG_PATCH pAllocationList 멤버에 의해 지정됨)에는 비디오 메모리 관리자가 생성하는 실제 주소도 포함됩니다. 드라이버의 DxgkDdiPatch 함수에 대한 호출은 DMA 버퍼가 GPU(그래픽 처리 장치)에 제출되기 전에 드라이버가 DMA 버퍼의 콘텐츠를 수정할 수 있는 마지막 기회입니다. 드라이버는 DMA 버퍼가 선점되는 시나리오에서 DMA 버퍼를 여러 번 패치할 수 있습니다.

드라이버는 DXGKARG_PATCH SubmissionFenceId 멤버에 제공된 값을 DMA 버퍼 끝에 있는 펜스 명령에 패치할 수 있습니다. 이 멤버에 대한 자세한 내용은 펜스 식별자 제공을 참조하세요.

드라이버가 오류 코드를 반환하는 경우 Microsoft DirectX 그래픽 커널 하위 시스템에서 시스템 버그 검사가 발생합니다. 크래시 덤프 파일에서 오류는 다음 네 개의 매개 변수가 있는 BugCheck 0x119 메시지로 표시됩니다.

  1. 0x3
  2. 내부 스케줄러 데이터 구조에 대한 포인터
  3. 내부 스케줄러 데이터 구조에 대한 포인터
  4. 내부 스케줄러 데이터 구조에 대한 포인터
DxgkDdiPatch 를 페이징 가능으로 만들어야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
대상 플랫폼 데스크톱
머리글 d3dkmddi.h
IRQL PASSIVE_LEVEL

추가 정보

DXGKARG_PATCH

DxgkDdiAddDevice