struttura DD_GETDRIVERINFO2DATA (d3dhal.h)

Solo DirectX 8.0 e versioni successive.

DD_GETDRIVERINFO2DATA viene passato nel membro lpvData della struttura DD_GETDRIVERINFODATA quando GUID_GetDriverInfo2 viene specificato nel membro guidInfo di DD_GETDRIVERINFODATA in una chiamata DdGetDriverInfo .

Sintassi

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

Members

dwReserved

Specifica un campo riservato. Il driver non deve leggere o scrivere.

dwMagic

Specifica il numero magic. Ha il valore D3DGDI2_MAGIC se si tratta di una chiamata GetDriverInfo2 . In caso contrario, questa struttura è, infatti, una chiamata DD_STEREOMODE .

dwType

Specifica il tipo di informazioni richieste, che può contenere uno dei valori D3DGDI2_TYPE_Xxx seguenti. Il driver deve solo leggere (non scrivere) questo membro.

Valore Significato
D3DGDI2_TYPE_DEFER_AGP_FREES Solo sistemi operativi basati su NT.
Viene usato per notificare al driver che deve gestire correttamente la distruzione della memoria AGP per le superfici. Il runtime fornisce un puntatore a una struttura DD_FREE_DEFERRED_AGP_DATA nel campo lpvData della struttura dei dati DD_GETDRIVERINFODATA.
Il driver a volte riceve questa notifica prima che si verifichi una modifica della modalità di visualizzazione. Il runtime invia questa notifica solo se deve essere usata per eseguire la modifica della modalità di visualizzazione. I driver devono controllare l'identificatore del processo (PID) del processo eliminando la superficie rispetto al processo che ha creato la superficie. Se i PID sono diversi, il driver probabilmente non dovrebbe eliminare definitivamente i mapping in modalità utente della memoria AGP perché un'applicazione potrebbe ancora usare la memoria.
D3DGDI2_TYPE_DEFERRED_AGP_AWARE Solo sistemi operativi basati su NT.
Viene usato per informare il driver che il runtime invia D3DGDI2_TYPE_FREE_DEFERRED_AGP e D3DGDI2_TYPE_DEFER_AGP_FREES notifiche al momento appropriato, ad esempio dopo il rilascio dell'ultimo blocco di memoria AGP in sospeso. Il runtime fornisce un puntatore a una struttura DD_DEFERRED_AGP_AWARE_DATA nel campo lpvData della struttura dei dati DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_DXVERSION Viene usato per notificare al driver la versione corrente del runtime DX usata dall'applicazione. Il runtime fornisce un puntatore a una struttura DD_DXVERSION nel campo lpvData della struttura dei dati DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_FREE_DEFERRED_AGP Solo sistemi operativi basati su NT.
Viene usato per notificare al driver che è ora sicuro eliminare tutti i mapping in modalità utente della memoria AGP . Il driver ha mantenuto questi mapping in modalità utente quando le superfici sono state eliminate definitivamente e ha ricevuto una notifica di D3DGDI2_TYPE_DEFER_AGP_FREES. Il runtime fornisce un puntatore a una struttura DD_FREE_DEFERRED_AGP_DATA nel campo lpvData della struttura dei dati DD_GETDRIVERINFODATA.
Il driver riceve questa notifica quando tutti i dispositivi di visualizzazione all'interno del processo terminano usando superfici, trame, vertex buffer e buffer di indice bloccati al momento della modifica della modalità di visualizzazione.
D3DGDI2_TYPE_GETADAPTERGROUP Solo DirectX 9.0 e versioni successive.
Viene usato per eseguire una query sul driver per l'identità del gruppo di adattatori che fanno parte della scheda video a più teste. Questo gruppo condivide hardware video come la memoria video e l'acceleratore 3D. Il driver deve impostare la struttura dei dati a cui punta il campo lpvData della struttura dei dati DD_GETDRIVERINFODATA su DD_GETADAPTERGROUPDATA.
D3DGDI2_TYPE_GETD3DCAPS8 Questo tipo indica che le richieste di runtime per ricevere una struttura di D3DCAPS8 che offrono le funzionalità di stile DirectX 8.0 del dispositivo. Il driver deve copiare una struttura D3DCAPS8 inizializzata nel campo lpvData della struttura DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_GETD3DCAPS9 Obbligatorio solo per DirectX 9.0 e versioni successive.
Questo tipo indica che il runtime richiede di ricevere una struttura D3DCAPS9 che offre le funzionalità di stile DirectX 9.0 del dispositivo. Il driver deve copiare una struttura D3DCAPS9 inizializzata nel campo lpvData della struttura DD_GETDRIVERINFODATA.
D3DGDI2_TYPE_GETD3DQUERY Solo DirectX 9.0 e versioni successive.
Viene usato per eseguire una query sul driver per ottenere informazioni su un particolare tipo di query supportato. Il driver deve impostare la struttura dei dati a cui punta il campolpvData della struttura dei dati DD_GETDRIVERINFODATA su DD_GETD3DQUERYDATA.
D3DGDI2_TYPE_GETD3DQUERYCOUNT Solo DirectX 9.0 e versioni successive.
Viene usato per eseguire query sul driver per il numero di tipi di query supportati. Il driver deve impostare la struttura dei dati a cui punta il campo lpvData della struttura dei dati DD_GETDRIVERINFODATA su DD_GETD3DQUERYCOUNTDATA.
D3DGDI2_TYPE_GETDDIVERSION Solo DirectX 9.0 e versioni successive.
Viene usato per eseguire una query sul driver per la versione dell'DDI supportata dal driver; questa versione DDI, a sua volta, dipende dalla versione di DirectX che effettua questa richiesta. Il driver deve impostare il membro dwDDIVersion della struttura DD_GETDDIVERSIONDATA , su cui punta il campo lpvData della struttura di dati DD_GETDRIVERINFODATA, sulla versione DDI appropriata.
D3DGDI2_TYPE_GETEXTENDEDMODE Solo DirectX 9.0 e versioni successive.
Viene usato per eseguire una query sul driver per informazioni su una particolare modalità di visualizzazione estesa supportata. Il driver deve impostare la struttura dei dati a cui punta il campo lpvData della struttura dei dati DD_GETDRIVERINFODATA su DD_GETEXTENDEDMODEDATA.
D3DGDI2_TYPE_GETEXTENDEDMODECOUNT Solo DirectX 9.0 e versioni successive.
Viene usato per eseguire una query sul driver per il numero di modalità di visualizzazione estese supportate. Il driver deve impostare la struttura dei dati a cui punta il campo lpvData della struttura dei dati DD_GETDRIVERINFODATA su DD_GETEXTENDEDMODECOUNTDATA.
D3DGDI2_TYPE_GETFORMAT Viene usato per eseguire una query per un particolare formato di superficie dal driver. La struttura dei dati a cui punta il campo lpvData della struttura dei dati DD_GETDRIVERINFODATA è DD_GETFORMATDATA .
D3DGDI2_TYPE_GETFORMATCOUNT Viene usato per richiedere il numero di formati di superficie di stile DirectX 8.0 e versioni successive supportati dal driver. La struttura dei dati a cui punta il campolpvData del DD_GETDRIVERINFODATA è DD_GETFORMATCOUNTDATA.
D3DGDI2_TYPE_GETMULTISAMPLEQUALITYLEVELS Solo DirectX 9.0 e versioni successive.
Viene usato per eseguire una query sul driver per il numero di livelli di qualità a più campioni per un determinato formato di destinazione di rendering supportato. Indipendentemente dal fatto che il dispositivo di visualizzazione supporti il multicampionamento mascherabile o submaskable, il driver per il dispositivo deve fornire il numero di livelli di qualità per il D3DMULTISAMPLE_NONMASKABLE tipo a più campioni. Il driver deve impostare la struttura dei dati a cui punta il campo lpvData della struttura dei dati DD_GETDRIVERINFODATA su DD_MULTISAMPLEQUALITYLEVELSDATA.

dwExpectedSize

Specifica le dimensioni previste, in byte, delle informazioni richieste. Il driver deve solo leggere (non scrivere) questo membro.

Commenti

Il membro dwExpectedSize della struttura DD_GETDRIVERINFODATA non viene usato quando viene effettuata una richiesta GetDriverInfo2 . Il valore non è definito in questo caso e deve essere ignorato. Al contrario, le dimensioni previste effettive dei dati si trovano nel membro dwExpectedSize di DD_GETDRIVERINFO2DATA.

Il frammento di codice seguente illustra come gestire 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

Per altre informazioni su D3DCAPS8 e D3DCAPS9, vedere la documentazione di DirectX SDK.

Requisiti

Requisito Valore
Intestazione d3dhal.h (include D3dhal.h)

Vedi anche

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