Compartilhar via


estrutura DD_GETDRIVERINFO2DATA (d3dhal.h)

Somente o DirectX 8.0 e versões posteriores.

DD_GETDRIVERINFO2DATA é passado no membro lpvData da estrutura DD_GETDRIVERINFODATA quando GUID_GetDriverInfo2 é especificado no membro guidInfo de DD_GETDRIVERINFODATA em uma chamada DdGetDriverInfo .

Sintaxe

typedef struct _DD_GETDRIVERINFO2DATA {
  DWORD dwReserved;
  DWORD dwMagic;
  DWORD dwType;
  DWORD dwExpectedSize;
} DD_GETDRIVERINFO2DATA;

Membros

dwReserved

Especifica um campo reservado. O driver não deve ler nem gravar.

dwMagic

Especifica o número mágico. Tem o valor D3DGDI2_MAGIC se essa for uma chamada GetDriverInfo2 . Caso contrário, essa estrutura é, de fato, uma chamada DD_STEREOMODE .

dwType

Especifica o tipo de informação solicitada, que pode conter um dos seguintes valores D3DGDI2_TYPE_Xxx . O driver só deve ler (não gravar) este membro.

Valor Significado
D3DGDI2_TYPE_DEFER_AGP_FREES Somente sistemas operacionais baseados em NT.
É usado para notificar o driver de que ele deve lidar corretamente com a destruição da memória do AGP para superfícies. O runtime fornece um ponteiro para uma estrutura DD_FREE_DEFERRED_AGP_DATA no campo lpvData da estrutura de dados DD_GETDRIVERINFODATA.
Às vezes, o driver recebe essa notificação antes que ocorra uma alteração no modo de exibição. O runtime só enviará essa notificação se ela for usada para executar a alteração do modo de exibição. Os drivers devem marcar o PID (identificador de processo) do processo que destrói a superfície em relação ao processo que criou a superfície. Se os PIDs forem diferentes, o driver provavelmente não deve destruir os mapeamentos de modo de usuário da memória do AGP porque um aplicativo ainda pode estar usando a memória.
D3DGDI2_TYPE_DEFERRED_AGP_AWARE Somente sistemas operacionais baseados em NT.
É usado para informar ao driver que o runtime envia notificações D3DGDI2_TYPE_FREE_DEFERRED_AGP e D3DGDI2_TYPE_DEFER_AGP_FREES no momento apropriado (por exemplo, depois que o último bloqueio de memória AGP pendente é liberado). O runtime fornece um ponteiro para uma estrutura DD_DEFERRED_AGP_AWARE_DATA no campo lpvData da estrutura de dados DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_DXVERSION É usado para notificar o driver da versão de runtime DX atual que está sendo usada pelo aplicativo. O runtime fornece um ponteiro para uma estrutura DD_DXVERSION no campo lpvData da estrutura de dados DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_FREE_DEFERRED_AGP Somente sistemas operacionais baseados em NT.
É usado para notificar o driver de que agora é seguro destruir todos os mapeamentos de modo de usuário da memória do AGP . O driver preservou esses mapeamentos de modo de usuário quando as superfícies foram destruídas e recebeu uma notificação de D3DGDI2_TYPE_DEFER_AGP_FREES. O runtime fornece um ponteiro para uma estrutura DD_FREE_DEFERRED_AGP_DATA no campo lpvData da estrutura de dados DD_GETDRIVERINFODATA.
O driver recebe essa notificação quando todos os dispositivos de exibição dentro do processo param usando superfícies, texturas, buffers de vértice e buffers de índice bloqueados no momento da alteração do modo de exibição.
D3DGDI2_TYPE_GETADAPTERGROUP Somente o DirectX 9.0 e versões posteriores.
É usado para consultar o driver para a identidade do grupo de adaptadores que fazem parte de sua cartão de vídeo de várias cabeças. Esse grupo compartilha hardware de vídeo como memória de vídeo e o acelerador 3D. O driver deve definir a estrutura de dados apontada pelo campo lpvData da estrutura de dados DD_GETDRIVERINFODATA como DD_GETADAPTERGROUPDATA.
D3DGDI2_TYPE_GETD3DCAPS8 Esse tipo indica que o runtime solicita receber uma estrutura D3DCAPS8 fornecendo os recursos de estilo DirectX 8.0 do dispositivo. O driver deve copiar uma estrutura de D3DCAPS8 inicializada para o campo lpvData da estrutura DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_GETD3DCAPS9 Necessário apenas para o DirectX 9.0 e versões posteriores.
Esse tipo indica que o runtime solicita receber uma estrutura D3DCAPS9 fornecendo os recursos de estilo DirectX 9.0 do dispositivo. O driver deve copiar uma estrutura de D3DCAPS9 inicializada para o campo lpvData da estrutura DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_GETD3DQUERY Somente o DirectX 9.0 e versões posteriores.
É usado para consultar o driver para obter informações sobre um tipo de consulta específico que ele dá suporte. O driver deve definir a estrutura de dados apontada pelo campolpvData da estrutura de dados DD_GETDRIVERINFODATA como DD_GETD3DQUERYDATA.
D3DGDI2_TYPE_GETD3DQUERYCOUNT Somente o DirectX 9.0 e versões posteriores.
É usado para consultar o driver quanto ao número de tipos de consulta compatíveis. O driver deve definir a estrutura de dados apontada pelo campo lpvData da estrutura de dados DD_GETDRIVERINFODATA como DD_GETD3DQUERYCOUNTDATA.
D3DGDI2_TYPE_GETDDIVERSION Somente o DirectX 9.0 e versões posteriores.
É usado para consultar o driver para a versão da DDI compatível com o driver; essa versão DDI, por sua vez, depende da versão do DirectX que faz essa solicitação. O driver deve definir o membro dwDDIVersion da estrutura DD_GETDDIVERSIONDATA , à qual o campo lpvData da estrutura de dados DD_GETDRIVERINFODATA aponta para a versão DDI apropriada.
D3DGDI2_TYPE_GETEXTENDEDMODE Somente o DirectX 9.0 e versões posteriores.
É usado para consultar o driver para obter informações sobre um modo de exibição estendido específico que ele dá suporte. O driver deve definir a estrutura de dados apontada pelo campo lpvData da estrutura de dados DD_GETDRIVERINFODATA como DD_GETEXTENDEDMODEDATA.
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT Somente o DirectX 9.0 e versões posteriores.
É usado para consultar o driver quanto ao número de modos de exibição estendidos aos quais ele dá suporte. O driver deve definir a estrutura de dados apontada pelo campo lpvData da estrutura de dados DD_GETDRIVERINFODATA como DD_GETEXTENDEDMODECOUNTDATA.
D3DGDI2_TYPE_GETFORMAT É usado para consultar um formato de superfície específico do driver. A estrutura de dados apontada pelo lpvDatafield da estrutura de dados DD_GETDRIVERINFODATA é DD_GETFORMATDATA .
D3DGDI2_TYPE_GETFORMATCOUNT É usado para solicitar o número de formatos de superfície de estilo DirectX 8.0 e posteriores compatíveis com o driver. A estrutura de dados apontada pelo campolpvData do DD_GETDRIVERINFODATA é DD_GETFORMATCOUNTDATA.
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS Somente o DirectX 9.0 e versões posteriores.
É usado para consultar o driver quanto ao número de níveis de qualidade de vários exemplos para um determinado formato de destino de renderização compatível. Se o dispositivo de exibição dá suporte a multissepiação mascarada ou submaskável, o driver do dispositivo deve fornecer o número de níveis de qualidade para o D3DMULTISAMPLE_NONMASKABLE tipo de vários exemplos. O driver deve definir a estrutura de dados apontada pelo campo lpvData da estrutura de dados DD_GETDRIVERINFODATA como DD_MULTISAMPLEQUALITYLEVELSDATA.

dwExpectedSize

Especifica o tamanho esperado, em bytes, das informações solicitadas. O driver só deve ler (não gravar) este membro.

Comentários

O membro dwExpectedSize da estrutura DD_GETDRIVERINFODATA não é usado quando uma solicitação GetDriverInfo2 está sendo feita. Seu valor é indefinido nesse caso e deve ser ignorado. Em vez disso, o tamanho real esperado dos dados é encontrado no membro dwExpectedSize de DD_GETDRIVERINFO2DATA.

O fragmento de código a seguir demonstra como lidar com 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

Para obter mais informações sobre D3DCAPS8 e D3DCAPS9, consulte a documentação do SDK do DirectX.

Requisitos

Requisito Valor
Cabeçalho d3dhal.h (inclua D3dhal.h)

Confira também

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