PFND3DDDI_SETASYNCCALLBACKSCB 콜백 함수(d3dumddi.h)

pfnSetAsyncCallbacksCb 함수는 런타임이 작업자 스레드에서 런타임의 콜백 함수에 대한 호출 수신을 시작하거나 중지할지 여부를 Microsoft Direct3D 런타임에 알립니다.

구문

PFND3DDDI_SETASYNCCALLBACKSCB Pfnd3dddiSetasynccallbackscb;

HRESULT Pfnd3dddiSetasynccallbackscb(
  HANDLE hDevice,
  BOOL Enable
)
{...}

매개 변수

hDevice

디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.

Enable

런타임이 작업자 스레드에서 런타임의 콜백 함수에 대한 호출 수신을 시작하거나 중지할지 여부를 지정하는 부울 값입니다. TRUE 는 런타임이 작업자 스레드에서 콜백 함수에 대한 호출을 수신하기 시작했음을 나타냅니다. FALSE 는 런타임이 작업자 스레드에서 콜백 함수에 대한 호출 수신을 중지했음을 나타냅니다.

반환 값

pfnSetAsyncCallbacksCb 는 다음 값 중 하나를 반환합니다.

반환 코드 설명
S_OK Direct3D 런타임에 알림이 성공적으로 전송되었습니다.
E_INVALIDARG 매개 변수의 유효성이 검사되었고 잘못된 것으로 확인되었습니다.

이 함수는 다른 HRESULT 값을 반환할 수도 있습니다.

설명

사용자 모드 디스플레이 드라이버가 자체 다중 프로세서 최적화를 구현하는 경우(즉, 드라이버가 작업자 스레드를 만들고 해당 스레드에서 명령을 처리함) 드라이버는 pfnSetAsyncCallbacksCb 를 호출하여 런타임이 작업자 스레드에서 런타임의 콜백 함수에 대한 호출을 시작하거나 중지할지 여부를 Direct3D 런타임에 알려야 합니다. 또한 이러한 드라이버는 LockAsync, UnlockAsync이름 바꾸기 함수를 구현해서는 안 됩니다. 이렇게 하면 런타임이 자체 다중 프로세서 최적화를 사용하지 않습니다.

사용자 모드 표시 드라이버는 기본 애플리케이션 스레드(즉, 드라이버에 호출된 스레드)에서만 pfnSetAsyncCallbacksCb를 호출할 수 있습니다. 드라이버의 작업자 스레드는 pfnSetAsyncCallbacksCb를 호출할 수 없습니다. 언제든지 특정 렌더링 디바이스를 참조하는 하나의 스레드만 런타임의 콜백 함수에서 실행할 수 있습니다.

사용자 모드 표시 드라이버가 기본 애플리케이션 스레드가 아닌 스레드에서 런타임의 콜백 함수를 호출하기 전에 드라이버는 pfnSetAsyncCallbacksCb 호출에서 Enable 매개 변수에 TRUE를 전달해야 합니다. 사용자 모드 표시 드라이버가 기본 애플리케이션 스레드에서 런타임의 콜백 함수를 호출하기 전에 드라이버는 pfnSetAsyncCallbacksCb 호출에서 Enable 매개 변수에 FALSE를 전달해야 합니다.

각 렌더링 디바이스에 대한 Flush 구현 내에서 드라이버는 pfnSetAsyncCallbacksCb를 호출하고 ENABLE 매개 변수에 FALSE를 전달합니다.

드라이버가 pfnSetAsyncCallbacksCb 호출에서 Enable 매개 변수에 TRUE를 전달하면 런타임은 콜백 함수에서 디바이스 손실 상황에 즉시 응답하지 않는 상태가 됩니다. 대신 런타임이 이 상태일 때 콜백 함수에서 분실한 디바이스를 감지하면 이벤트가 발생했음을 나타내는 비트를 설정합니다. 드라이버가 pfnSetAsyncCallbacksCb 호출에서 Enable 매개 변수에 FALSE를 전달하면 런타임은 비트를 확인하여 디바이스 손실이 발생했는지 확인합니다. 비트가 설정되면 런타임은 일반적인 디바이스 손실 처리를 수행합니다. 이 시점 이후에는 드라이버가 런타임에서 해당 함수에 대한 대부분의 호출을 더 이상 수신하지 않습니다.

런타임의 DirectX 9 및 DirectX 9L 버전만 pfnSetAsyncCallbacksCb를 지원합니다. 런타임이 사용자 모드 디스플레이 드라이버의 CreateDevice(D3D10) 함수를 호출하여 렌더링 디바이스를 만들 때 DirectX 10 이상 버전의 런타임은 D3DDDI_DEVICECALLBACKS 구조의 pfnSetAsyncCallbacksCb 멤버를 NULL로 설정합니다.

참고 9 이전의 DirectX 버전은 다중 프로세서 최적화를 지원하지 않습니다.
 
드라이버가 드라이버의 CreateDevice 함수 호출에서 이전에 D3DDDI_DEVICECALLBACKS pfnSetAsyncCallbacksCb 멤버를 비 NULL로 설정한 경우에만 드라이버가 작업자 스레드에서 런타임의 콜백 함수를 호출할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 d3dumddi.h(D3dumddi.h 포함)

추가 정보

CreateDevice

CreateDevice(D3D10)

D3DDDI_DEVICECALLBACKS

플러시

LockAsync

이름 바꾸기

UnlockAsync