PFND3DDDI_LOCK 콜백 함수(d3dumddi.h)
Lock 함수는 리소스 내에서 지정된 리소스 또는 표면을 잠급니다.
통사론
PFND3DDDI_LOCK Pfnd3dddiLock;
HRESULT Pfnd3dddiLock(
HANDLE hDevice,
D3DDDIARG_LOCK *unnamedParam2
)
{...}
매개 변수
hDevice
디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.
unnamedParam2
pData [in, out]
잠글 리소스 내의 리소스 또는 표면을 설명하는 D3DDDIARG_LOCK 구조체에 대한 포인터입니다.
반환 값
Lock 다음 값 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
S_OK | 리소스가 성공적으로 잠겼습니다. |
E_OUTOFMEMORY | 잠금을 완료하는 데 필요한 메모리를 할당할 수 없습니다. |
D3DDDIERR_WASSTILLDRAWING | Microsoft Direct3D 런타임이 D3DDDIARG_LOCK Flags 멤버에 설정된 DoNotWait 비트 필드 플래그를 사용하여 Lock 함수를 호출했을 때 리소스가 유휴 상태가 아닙니다. |
발언
Microsoft Direct3D 런타임은 사용자 모드 표시 드라이버의 Lock 함수를 호출하여 리소스 또는 리소스 내의 표면을 잠급니다. 이 잠긴 리소스 또는 표면은 CPU에서 읽기 및 쓰기 작업을 사용하여 읽거나 쓸 수 있습니다. 런타임이 Lock호출하는 경우 사용자 모드 표시 드라이버는 런타임의 pfnLockCb 콜백 함수를 호출하여 리소스 또는 표면에 해당하는 할당을 잠가야 합니다. 사용자 모드 표시 드라이버는 각 리소스 또는 화면에 대해 여러 할당을 할당할 수 있으므로 사용자 모드 표시 드라이버는 런타임에 Lock 호출을 반환하기 전에 pfnLockCb 반환된 할당 포인터를 적절하게 변환하거나 처리해야 할 수 있습니다.
일반적으로 Lock 호출한 다음 드라이버의 Unlock 함수에 대한 호출을 일치시킨 후 드라이버가 그리기 기본 함수(즉, DrawIndexedPrimitive, drawIndexedPrimitive2 , DrawPrimitive및 DrawPrimitive2)를호출합니다. 이 순서는 드라이버가 잠긴 리소스에서 그리도록 요청되지 않도록 보장합니다. 그러나 경우에 따라 소프트웨어 변환 및 조명을 수행할 때 런타임은 리소스 잠금을 해제하기 전에 드라이버의 그리기 기본 함수 중 하나를 호출해야 합니다(현재 꼭짓점 버퍼만 이 동작을 표시). 런타임은 D3DDDIARG_CREATERESOURCE 및 D3DDDIARG_LOCK 구조체의 Flags 멤버에서 MightDrawFromLocked 비트 필드 플래그를 사용하여 이 일반적이지 않은 동작이 발생할 수 있는 꼭짓점 버퍼를 표시합니다(즉, 생성 시 및 잠금 시). 하드웨어가 잠긴 꼭짓점 버퍼에서 적극적으로 렌더링하는 경우 런타임이 잠긴 꼭짓점 버퍼의 데이터를 덮어쓰지 않으므로 드라이버가 특별한 작업을 수행할 필요가 없습니다.
런타임은 사용자 모드 디스플레이 드라이버의 Lock 함수를 호출하여 미리 할당된 시스템 메모리 표면도 잠급니다. 이 작업을 통해 사용자 모드 표시 드라이버는 하드웨어 명령 스트림에 있을 수 있는 이러한 표면에 대한 참조를 제대로 동기화할 수 있습니다. 사용자 모드 표시 드라이버는 다음을 통해 동기화를 수행할 수 있습니다.
- 필요에 따라 런타임의 pfnRenderCb 콜백 함수 호출)을 플러시합니다.
- pfnLockCb 호출은 하드웨어에 이미 제출된 명령에 대한 적절한 할당 핸들을 사용하여.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | d3dumddi.h(D3dumddi.h 포함) |