Metodo IDirectDraw7::GetAvailableVidMem (ddraw.h)

Recupera la quantità totale di memoria di visualizzazione disponibile e la quantità di memoria di visualizzazione attualmente disponibile per un determinato tipo di superficie.

Sintassi

HRESULT GetAvailableVidMem(
  [in]  LPDDSCAPS2 unnamedParam1,
  [out] LPDWORD    unnamedParam2,
  [out] LPDWORD    unnamedParam3
);

Parametri

[in] unnamedParam1

Puntatore a una struttura DDSCAPS2 che indica le funzionalità hardware della superficie proposta.

[out] unnamedParam2

Puntatore a una variabile che riceve la quantità totale di memoria di visualizzazione disponibile, in byte. Il valore ricevuto riflette la memoria video totale, meno la memoria video necessaria per la superficie primaria e tutte le cache private riservate dal driver di visualizzazione.

[out] unnamedParam3

Puntatore a una variabile che riceve la quantità di memoria di visualizzazione attualmente disponibile che può essere allocata per una superficie corrispondente alle funzionalità specificate dalla struttura in lpDDSCaps2.

Valore restituito

Se il metodo ha esito positivo, il valore restituito viene DD_OK.

Se ha esito negativo, il metodo può restituire uno dei valori di errore seguenti:

  • DDERR_INVALIDCAPS
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NODIRECTDRAWHW

Commenti

L'esempio C++ seguente illustra come usare GetAvailableVidMem per determinare la memoria di visualizzazione totale e libera disponibile per le superfici della mappa delle trame:

// For this example, the lpDD variable is a valid 
// pointer to an IDirectDraw7 interface.
LPDIRECTDRAW7 lpDD;
DDSCAPS2      ddsCaps2; 
DWORD         dwTotal; 
DWORD         dwFree;
HRESULT       hr; 
 
hr = lpDD->QueryInterface(IID_IDirectDraw7, &lpDD); 
if (FAILED(hr))
    return hr; 
 
// Initialize the structure.
ZeroMemory(&ddsCaps2, sizeof(ddsCaps2));
 
ddsCaps2.dwCaps = DDSCAPS_TEXTURE; 
hr = lpDD->GetAvailableVidMem(&ddsCaps2, &dwTotal, &dwFree); 
if (FAILED(hr))
    return hr;


Se la superficie ha il flag DDSCAPS_VIDEOMEMORY impostato, GetAvailableVidMem restituisce quantità diverse di memoria video a seconda che la superficie possa essere usata come trama 3D. Se la superficie può essere usata per le trame 3D, GetAvailableVidMem restituisce la somma della memoria video locale e della memoria video non locale nei sistemi AGP.

GetAvailableVidMem fornisce solo uno snapshot dello stato di memoria di visualizzazione corrente. La quantità di memoria di visualizzazione libera è soggetta a modifiche man mano che le superfici vengono create e rilasciate. Pertanto, è consigliabile usare il valore di memoria disponibile solo come approssimazione. Inoltre, una scheda scheda scheda di visualizzazione specifica potrebbe non fare distinzione tra due tipi di memoria diversi. Ad esempio, l'adattatore potrebbe usare la stessa parte della memoria di visualizzazione per archiviare i buffer z e le trame. Di conseguenza, l'allocazione di un tipo di superficie (ad esempio, un buffer z) può influire sulla quantità di memoria di visualizzazione disponibile per un altro tipo di superficie (trame). Pertanto, è consigliabile allocare prima le risorse fisse di un'applicazione (ad esempio buffer front-back e buffer z) prima di determinare la quantità di memoria disponibile per l'uso dinamico (ad esempio il mapping delle trame).

GetAvailableVidMem non è stato implementato nella versione precedente dell'interfaccia IDirectDraw DirectX.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione ddraw.h
Libreria Ddraw.lib
DLL Ddraw.dll

Vedi anche

IDirectDraw7