다음을 통해 공유


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 포함)

추가 정보

DD_DEFERRED_AGP_AWARE_DATA

DD_DXVERSION

DD_FREE_DEFERRED_AGP_DATA

DD_GETADAPTERGROUPDATA

DD_GETD3DQUERYCOUNTDATA

DD_GETD3DQUERYDATA

DD_GETDDIVERSIONDATA

DD_GETDRIVERINFODATA

DD_GETEXTENDEDMODECOUNTDATA

DD_GETEXTENDEDMODEDATA

DD_GETFORMATCOUNTDATA

DD_GETFORMATDATA

DD_MULTISAMPLEQUALITYLEVELSDATA

DD_STEREOMODE

DdGetDriverInfo