Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O AllocateSurface método aloca uma superfície DirectDraw.
Sintaxe
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
Parâmetros
[in] dwUserID
Um cookie de DWORD_PTR definido pelo aplicativo que identifica exclusivamente essa instância da VMR para uso em cenários em que uma instância do alocador-apresentador é usada com várias instâncias de VMR.
[in] lpAllocInfo
Especifica a estrutura VMRALLOCATIONINFO . Consulte Observações.
[in] lpdwActualBuffers
[out] Na entrada, esse parâmetro é usado para solicitar o número de buffers desejados. Na saída, ele recebe o número real de buffers criados.
[out] lplpSurface
Endereço de um ponteiro que recebe a superfície direct3D.
Retornar valor
Se o método for bem-sucedido, retornará S_OK. Se falhar, retornará um código de erro.
| Código de retorno | Descrição |
|---|---|
|
Um dos ponteiros é inválido. |
|
Em dwFlags, a AMAP_3D_TARGET foi combinada com AMAP_FORCE_SYSMEM ou AMAP_ALLOW_SYSMEM. |
|
Um ou mais membros da estrutura BITMAPINFOHEADER especificada por lpAllocInfo-lpHdr> estão incorretos. |
Comentários
Antes de chamar AllocateSurface explicitamente, um aplicativo cliente deve chamar IVMRSurfaceAllocator::FreeSurface para ter certeza de que o buffer frontal da superfície de decodificação do DirectDraw é NULL. Se não for NULL no momento em que um aplicativo chamar AllocateSurface, a versão de depuração do quartz.dll causará uma asserção.
Ao implementar esse método em um alocador-apresentador personalizado, você deve examinar o valor de lpAllocInfo-lpHdr-biBitCount>>. Se biBitCount for zero, você deverá defini-lo como a profundidade do pixel para a exibição atual. Se BiBitCount for deixado em zero, a alocação de superfície falhará e uma nova VMR (padrão) será criada.
Requisitos
| Requisito | Valor |
|---|---|
| Cliente mínimo com suporte | Windows XP com SP1 [somente aplicativos da área de trabalho] |
| Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
| Plataforma de Destino | Windows |
| Cabeçalho | strmif.h (inclua Dshow.h) |
| Biblioteca | Strmiids.lib |