DD_GETDRIVERINFO2DATA 구조체(d3dhal.h)
DirectX 8.0 이상 버전만 해당합니다.
DdGetDriverInfo 호출에서 DD_GETDRIVERINFODATA guidInfo 멤버에 GUID_GetDriverInfo2 지정하면 DD_GETDRIVERINFO2DATA DD_GETDRIVERINFODATA 구조체의 lpvData 멤버에 전달됩니다.
구문
typedef struct _DD_GETDRIVERINFO2DATA {
DWORD dwReserved;
DWORD dwMagic;
DWORD dwType;
DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;
멤버
dwReserved
예약된 필드를 지정합니다. 드라이버는 읽거나 쓰지 않아야 합니다.
dwMagic
매직 번호를 지정합니다. GetDriverInfo2 호출인 경우 값이 D3DGDI2_MAGIC. 그렇지 않으면 이 구조체는 실제로 DD_STEREOMODE 호출입니다.
dwType
다음 D3DGDI2_TYPE_Xxx 값 중 하나를 포함할 수 있는 요청된 정보의 형식을 지정합니다. 드라이버는 이 멤버만 읽어야 합니다(쓰기가 아님).
값 | 의미 |
---|---|
D3DGDI2_TYPE_DEFER_AGP_FREES | NT 기반 운영 체제만. 표면에 대한 AGP 메모리 의 소멸을 제대로 처리해야 한다는 것을 드라이버에 알리는 데 사용됩니다. 런타임은 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드에 있는 DD_FREE_DEFERRED_AGP_DATA 구조체에 대한 포인터를 제공합니다. 디스플레이 모드 변경이 발생하기 전에 드라이버가 이 알림을 받는 경우가 있습니다. 런타임은 디스플레이 모드 변경을 수행하는 데 사용되는 경우에만 이 알림을 보냅니다. 드라이버는 표면을 만든 프로세스에 대해 표면을 파괴하는 프로세스의 PID(프로세스 식별자)를 검사 합니다. PID가 다른 경우 애플리케이션이 여전히 메모리를 사용하고 있을 수 있으므로 드라이버가 AGP 메모리의 사용자 모드 매핑을 삭제해서는 안 됩니다. |
D3DGDI2_TYPE_DEFERRED_AGP_AWARE | NT 기반 운영 체제만. 런타임이 적절한 시간에 D3DGDI2_TYPE_FREE_DEFERRED_AGP 보내고 알림을 D3DGDI2_TYPE_DEFER_AGP_FREES 있음을 드라이버에 알리는 데 사용됩니다(예: 마지막 미해결 AGP 메모리 잠금이 해제된 후). 런타임은 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드에 있는 DD_DEFERRED_AGP_AWARE_DATA 구조체에 대한 포인터를 제공합니다. |
D3DGDI2_TYPE_DXVERSION | 애플리케이션에서 사용 중인 현재 DX 런타임 버전을 드라이버에 알리는 데 사용됩니다. 런타임은 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드에 있는 DD_DXVERSION 구조체에 대한 포인터를 제공합니다. |
D3DGDI2_TYPE_FREE_DEFERRED_AGP | NT 기반 운영 체제만. 이제 AGP 메모리 의 모든 사용자 모드 매핑을 삭제하는 것이 안전하다는 것을 드라이버에 알리는 데 사용됩니다. 드라이버는 표면이 파괴되고 D3DGDI2_TYPE_DEFER_AGP_FREES 알림을 받았을 때 이러한 사용자 모드 매핑을 유지했습니다. 런타임은 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드에 있는 DD_FREE_DEFERRED_AGP_DATA 구조체에 대한 포인터를 제공합니다. 디스플레이 모드 변경 시 잠긴 표면, 텍스처, 꼭짓점 버퍼 및 인덱스 버퍼를 사용하여 프로세스 내의 모든 디스플레이 디바이스가 중지되면 드라이버가 이 알림을 받습니다. |
D3DGDI2_TYPE_GETADAPTERGROUP | DirectX 9.0 이상 버전만 해당합니다. 드라이버에서 다중 헤드 비디오 카드 일부인 어댑터 그룹의 ID를 쿼리하는 데 사용됩니다. 이 그룹은 비디오 메모리 및 3D 액셀러레이터와 같은 비디오 하드웨어를 공유합니다. 드라이버는 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드가 가리키는 데이터 구조를 DD_GETADAPTERGROUPDATA 설정해야 합니다. |
D3DGDI2_TYPE_GETD3DCAPS8 | 이 형식은 런타임이 디바이스의 DirectX 8.0 스타일 기능을 제공하는 D3DCAPS8 구조를 수신하도록 요청했음을 나타냅니다. 드라이버는 초기화된 D3DCAPS8 구조를 DD_GETDRIVERINFODATA 구조체의 lpvData 필드에 복사해야 합니다. |
D3DGDI2_TYPE_GETD3DCAPS9 | DirectX 9.0 이상 버전에만 필요합니다. 이 형식은 런타임이 디바이스의 DirectX 9.0 스타일 기능을 제공하는 D3DCAPS9 구조를 수신하도록 요청했음을 나타냅니다. 드라이버는 초기화된 D3DCAPS9 구조를 DD_GETDRIVERINFODATA 구조체의 lpvData 필드에 복사해야 합니다. |
D3DGDI2_TYPE_GETD3DQUERY | DirectX 9.0 이상 버전만 해당합니다. 드라이버에서 지원하는 특정 쿼리 형식에 대한 정보를 쿼리하는 데 사용됩니다. 드라이버는 DD_GETDRIVERINFODATA 데이터 구조의lpvData 필드가 가리키는 데이터 구조를 DD_GETD3DQUERYDATA 설정해야 합니다. |
D3DGDI2_TYPE_GETD3DQUERYCOUNT | DirectX 9.0 이상 버전만 해당합니다. 드라이버에서 지원하는 쿼리 형식 수를 쿼리하는 데 사용됩니다. 드라이버는 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드가 가리키는 데이터 구조를 DD_GETD3DQUERYCOUNTDATA 설정해야 합니다. |
D3DGDI2_TYPE_GETDDIVERSION | DirectX 9.0 이상 버전만 해당합니다. 드라이버에서 지원하는 DDI 버전을 드라이버에 쿼리하는 데 사용됩니다. 이 DDI 버전은 이 요청을 만드는 DirectX 버전에 따라 달라집니다. 드라이버는 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드가 가리키는 DD_GETDDIVERSIONDATA 구조체의 dwDDIVersion 멤버를 적절한 DDI 버전으로 설정해야 합니다. |
D3DGDI2_TYPE_GETEXTENDEDMODE | DirectX 9.0 이상 버전만 해당합니다. 드라이버에서 지원하는 특정 확장 디스플레이 모드에 대한 정보를 쿼리하는 데 사용됩니다. 드라이버는 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드가 가리키는 데이터 구조를 DD_GETEXTENDEDMODEDATA 설정해야 합니다. |
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT | DirectX 9.0 이상 버전만 해당합니다. 드라이버에서 지원하는 확장 디스플레이 모드 수를 쿼리하는 데 사용됩니다. 드라이버는 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드가 가리키는 데이터 구조를 DD_GETEXTENDEDMODECOUNTDATA 설정해야 합니다. |
D3DGDI2_TYPE_GETFORMAT | 드라이버에서 특정 표면 형식을 쿼리하는 데 사용됩니다. DD_GETDRIVERINFODATA 데이터 구조의 lpvDatafield가 가리키는 데이터 구조는 DD_GETFORMATDATA . |
D3DGDI2_TYPE_GETFORMATCOUNT | 드라이버에서 지원하는 DirectX 8.0 이상 스타일 표면 형식의 수를 요청하는 데 사용됩니다. DD_GETDRIVERINFODATA lpvData 필드가 가리키는 데이터 구조가 DD_GETFORMATCOUNTDATA. |
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS | DirectX 9.0 이상 버전만 해당합니다. 드라이버에서 지원하는 지정된 렌더링 대상 형식에 대한 다중 샘플 품질 수준 수를 쿼리하는 데 사용됩니다. 디스플레이 디바이스가 마스크 가능 또는 하위 마스크 가능 다중 샘플링을 지원하는지 여부에 관계없이 디바이스의 드라이버는 D3DMULTISAMPLE_NONMASKABLE 다중 샘플 유형에 대한 품질 수준 수를 제공해야 합니다. 드라이버는 DD_GETDRIVERINFODATA 데이터 구조의 lpvData 필드가 가리키는 데이터 구조를 DD_MULTISAMPLEQUALITYLEVELSDATA 설정해야 합니다. |
dwExpectedSize
요청된 정보의 예상 크기(바이트)를 지정합니다. 드라이버는 이 멤버만 읽어야 합니다(쓰기가 아님).
설명
GetDriverInfo2 요청이 있을 때 DD_GETDRIVERINFODATA 구조체의 dwExpectedSize 멤버는 사용되지 않습니다. 이 경우 해당 값은 정의되지 않으며 무시해야 합니다. 대신 데이터의 실제 예상 크기는 DD_GETDRIVERINFO2DATA dwExpectedSize 멤버에 있습니다.
다음 코드 조각에서는 GetDriverInfo2를 처리하는 방법을 보여 줍니다.
D3DCAPS8 myD3DCaps8 = { ... };
DWORD CALLBACK
DdGetDriverInfo(LPDDHAL_GETDRIVERINFODATA lpData)
{
if (MATCH_GUID((lpData->guidInfo), GUID_GetDriverInfo2))
{
ASSERT(NULL != lpData);
ASSERT(NULL != lpData->lpvData);
// Is this a call to GetDriverInfo2 or DDStereoMode?
if (((DD_GETDRIVERINFO2DATA*)(lpData->lpvData))->dwMagic
== D3DGDI2_MAGIC)
{
// Yes, it's a call to GetDriverInfo2, fetch the
// DD_GETDRIVERINFO2DATA data structure.
DD_GETDRIVERINFO2DATA* pgdi2 = lpData->lpvData;
ASSERT(NULL != pgdi2);
// What type of request is this?
switch (pgdi2->dwType)
{
case D3DGDI2_TYPE_GETD3DCAPS8:
{
// The runtime is requesting the DX8 D3D caps
// so copy them over now. It should be noted
// that the dwExpectedSize field of
// DD_GETDRIVERINFODATA is not used for
// GetDriverInfo2 calls and should be ignored.
size_t copySize = min(
sizeof(myD3DCaps8), pgdi2->dwExpectedSize);
memcpy(lpData->lpvData, &myD3DCaps8, copySize);
lpData->dwActualSize = copySize;
lpData->ddRVal = DD_OK;
return DDHAL_DRIVER_HANDLED;
}
default:
// For any other GetDriverInfo2 types not handled
// or understood by the driver set a ddRVal of
// DDERR_CURRENTLYNOTAVAIL and return
// DDHAL_DRIVER_HANDLED.
return DDHAL_DRIVER_HANDLED;
}
}
else
{
// It must be a call to request for stereo mode support.
// Fetch the stereo mode data
DD_STEREOMODE* pStereoMode = lpData->lpvData;
ASSERT(NULL != pStereoMode);
// Process the stereo mode request...
lpData->dwActualSize = sizeof(DD_STEREOMODE);
lpData->ddRVal = DD_OK;
return DDHAL_DRIVER_HANDLED;
}
}
// Handle any other device GUIDs...
} // DdGetDriverInfo
D3DCAPS8 및 D3DCAPS9 대한 자세한 내용은 DirectX SDK 설명서를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | d3dhal.h(D3dhal.h 포함) |