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
S_OK
O método foi bem-sucedido.
D3DERR_INVALIDCALL
Não é possível bloquear a superfície do Direct3D.
MF_E_INVALIDREQUEST
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

Confira também

IMF2DBuffer

Buffers de mídia

Buffers de vídeo não compactados