IMF2DBuffer2::Lock2DSize 메서드(mfobjects.h)

호출자에게 버퍼의 메모리에 대한 액세스 권한을 부여합니다.

구문

HRESULT Lock2DSize(
  [in]  MF2DBuffer_LockFlags lockFlags,
  [out] BYTE                 **ppbScanline0,
  [out] LONG                 *plPitch,
  [out] BYTE                 **ppbBufferStart,
  [out] DWORD                *pcbBufferLength
);

매개 변수

[in] lockFlags

읽기, 쓰기 또는 둘 다에 버퍼를 잠글지 여부를 지정하는 MF2DBuffer_LockFlags 열거형의 멤버입니다.

[out] ppbScanline0

이미지에서 픽셀 맨 위 행의 첫 번째 바이트에 대한 포인터를 받습니다. 이미지가 뷰어에 표시될 때 맨 위 행이 맨 위 행으로 정의되며 메모리의 첫 번째 행이 아닐 수 있습니다.

[out] plPitch

표면 보폭(바이트)을 받습니다. 보폭은 음수일 수 있으며, 이는 이미지가 메모리의 아래쪽에서 위로 방향을 지정함을 나타냅니다.

[out] ppbBufferStart

메모리에서 액세스 가능한 버퍼의 시작 부분에 대한 포인터를 받습니다.

[out] pcbBufferLength

버퍼의 길이(바이트)를 받습니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
S_OK
성공.
MF_E_INVALIDREQUEST
잘못된 요청입니다. 버퍼가 호환되지 않는 잠금 플래그로 이미 잠겨 있을 수 있습니다. 설명 부분을 참조하세요.
E_OUTOFMEMORY
메모리가 부족하여 작업을 완료할 수 없습니다.

설명

메모리 액세스가 완료되면 IMF2DBuffer::Unlock2D 를 호출하여 버퍼의 잠금을 해제합니다. Lock2DSize를 호출할 때마다 Unlock2D를 한 번 호출해야 합니다.

이 메서드는 IMF2DBuffer::Lock2D 메서드와 동일합니다. 그러나 Lock2DSize 는 호출자가 메모리 포인터의 유효성을 검사할 수 있고 읽기 전용 잠금을 지원하기 때문에 선호됩니다. 버퍼는 IMF2DBuffer2 인터페이스를 지원하도록 보장되지 않습니다. 버퍼에 액세스하려면 나열된 순서대로 다음 메서드를 시도해야 합니다.

  1. IMF2DBuffer2::Lock2DSize
  2. IMF2DBuffer::Lock2D
  3. IMFMediaBuffer::Lock
ppbBufferStartpcbBufferLength 매개 변수는 버퍼 메모리의 범위를 수신합니다. 이러한 값을 사용하여 버퍼 오버런을 방지합니다. ppbScanline0plPitch 값을 사용하여 이미지 데이터에 액세스합니다. 이미지가 메모리에서 상향식인 경우 ppbScanline0 은 메모리의 마지막 검사 줄을 가리키고 plPitch 는 음수입니다. 자세한 내용은 Image Stride를 참조하세요.

lockFlags 매개 변수는 버퍼가 읽기 전용 액세스, 쓰기 전용 액세스 또는 읽기/쓰기 액세스를 위해 잠겨 있는지 여부를 지정합니다.

  • 읽기 전용 액세스를 위해 버퍼가 이미 잠겨 있는 경우 쓰기 액세스를 위해 버퍼를 잠글 수 없습니다.
  • 쓰기 전용 액세스를 위해 버퍼가 이미 잠겨 있는 경우 읽기 액세스를 위해 버퍼를 잠글 수 없습니다.
  • 버퍼가 읽기/쓰기 액세스를 위해 이미 잠겨 있는 경우 읽기 또는 쓰기 액세스를 위해 버퍼를 잠글 수 있습니다.
가능하면 읽기 전용 또는 쓰기 전용 잠금을 사용하고 읽기/쓰기 액세스를 위해 버퍼를 잠그지 마세요. 버퍼가 DXGI(DirectX Graphics Infrastructure) 화면을 나타내는 경우 읽기/쓰기 잠금으로 인해 CPU 메모리와 GPU 메모리 간에 추가 복사본이 발생할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 mfobjects.h(Mfidl.h 포함)

추가 정보

IMF2DBuffer2