Compartir a través de


Método IDirect3DQuery9::GetData (d3d9helper.h)

Sondea un recurso consultado para obtener el estado de la consulta o un resultado de la consulta. Para obtener más información sobre las consultas, vea Consultas (Direct3D 9).

Sintaxis

HRESULT GetData(
  [in, out] void  *pData,
  [in]      DWORD dwSize,
  [in]      DWORD dwGetDataFlags
);

Parámetros

[in, out] pData

Tipo: void*

Puntero a un búfer que contiene los datos de consulta. El usuario es responsable de asignar esto. pData solo puede ser NULL si dwSize es 0.

[in] dwSize

Tipo: DWORD

Número de bytes de datos en pData. Si establece dwSize en cero, puede usar este método para sondear el recurso para el estado de la consulta. Vea Notas.

[in] dwGetDataFlags

Tipo: DWORD

Marcas de datos que especifican el tipo de consulta. Los valores válidos son 0 o D3DGETDATA_FLUSH. Use 0 para evitar el vaciado de consultas por lotes en el controlador y use D3DGETDATA_FLUSH para continuar y vaciarlas. En el caso de las aplicaciones que escriben su propia versión de espera, un resultado de consulta no se realiza hasta que el controlador recibe un vaciado.

Valor devuelto

Tipo: HRESULT

El tipo de valor devuelto identifica el estado de consulta (vea Consultas (Direct3D 9)). El método devuelve S_OK si los datos de consulta están disponibles y S_FALSE si no lo está. Se consideran valores devueltos correctos. Si se produce un error en el método cuando se usa D3DGETDATA_FLUSH , se puede D3DERR_DEVICELOST el valor devuelto.

Comentarios

Es posible perder el dispositivo mientras sondea el estado de la consulta. Cuando se especifica D3DGETDATA_FLUSH , este método devolverá D3DERR_DEVICELOST en respuesta a un dispositivo perdido. Esto permite que una aplicación impida que los subprocesos sondee sin fin debido a un dispositivo perdido (que no puede responder a la consulta).

Una aplicación nunca debe escribir código que solo invoca GetData ( ... , 0 ), esperando que GetData devuelva finalmente S_OK por sí mismo a lo largo del tiempo. Esto es cierto, incluso si la aplicación ha usado la marca FLUSH con GetData en el pasado. Por ejemplo:

// Enables an infinite loop:
while( pQuery->GetData( ... , 0 ) == S_FALSE ) ;

// Still enables an infinite loop:
pQuery->GetData( ... , D3DGETDATA_FLUSH );
while( pQuery->GetData( ... , 0 ) == S_FALSE ) ;

// Does not enable an infinite loop because eventually the command
// buffer will fill up and that will cause a flush to occur.
while( pQuery->GetData( ..., 0 ) == S_FALSE ) {
	pDevice->SetTexture(...);
	pDevice->Draw(...);
}

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9helper.h (incluya D3D9.h)
Library D3D9.lib

Consulte también

IDirect3DQuery9