Método IMF2DBuffer::Lock2D (mfobjects.h)
Fornece ao chamador acesso à memória no buffer.
Sintaxe
HRESULT Lock2D(
[out] BYTE **ppbScanline0,
[out] LONG *plPitch
);
Parâmetros
[out] ppbScanline0
Recebe um ponteiro para o primeiro byte da linha superior de pixels na imagem. A linha superior é definida como a linha superior quando a imagem é apresentada ao visualizador e pode não ser a primeira linha na memória.
[out] plPitch
Recebe o passo da superfície, em bytes. O passo pode ser negativo, indicando que a imagem é orientada de baixo para cima na memória.
Retornar valor
O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.
Código de retorno | Descrição |
---|---|
|
O método foi bem-sucedido. |
|
Não é possível bloquear a superfície do Direct3D. |
|
O buffer não pode ser bloqueado no momento. |
Comentários
Se p for um ponteiro para o primeiro byte em uma linha de pixels, p + (*plPitch) apontará para o primeiro byte na próxima linha de pixels. Um buffer pode conter preenchimento após cada linha de pixels, portanto, o passo pode ser maior do que a largura da imagem em bytes. Não acesse a memória reservada para bytes de preenchimento, pois ela pode não ser acessível por leitura ou acessível por gravação. Para obter mais informações, consulte Image Stride.
O ponteiro retornado em pbScanline0 permanece válido enquanto o chamador mantém o bloqueio. Quando terminar de acessar a memória, chame IMF2DBuffer::Unlock2D para desbloquear o buffer. Você deve chamar Unlock2D uma vez para cada chamada para Lock2D. Depois de desbloquear o buffer, o ponteiro retornado em pbScanline0 não é mais válido e não deve ser usado. Geralmente, é melhor chamar Lock2D somente quando você precisar acessar a memória do buffer e não anterior.
Os valores retornados pelos métodos IMFMediaBuffer::GetCurrentLength e IMFMediaBuffer::GetMaxLength não se aplicam ao buffer retornado pelo método Lock2D . Pelo mesmo motivo, você não precisa chamar IMFMediaBuffer::SetCurrentLength depois de manipular os dados no buffer retornado pelo método Lock2D .
O método IMFMediaBuffer::Lock falha enquanto o bloqueio Lock2D é mantido e vice-versa. Os aplicativos devem usar apenas um desses métodos por vez.
Quando o buffer subjacente é uma superfície Direct3D, o método falha se a superfície não estiver bloqueável.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | mfobjects.h (inclua Mfidl.h) |
Biblioteca | Mfuuid.lib |