DirectShow DirectShow 레퍼런스 인터페이스 IMemAllocator Decommit   [목차열람] [주소복사] [슬롯비우기]
IMemAllocator::Decommit
 
Microsoft DirectX 9.0

IMemAllocator::Decommit

Decommit 메서드는, 버퍼 메모리를 릴리즈 한다.

구문

HRESULT Decommit(void);

반환값

성공했을 경우는 S_OK 를 돌려준다. 그 이외의 경우는, 에러의 발생을 나타내는 HRESULT 값을 돌려준다.

주의

IMemAllocator::GetBuffer 메서드로 기다리고 있는 thread는 에러를 돌려준다. IMemAllocator::Commit 메서드가 불려 갈 때까지는, 이후의 GetBuffer 에의 호출은 실패한다.

Decommit 메서드의 목적은, 필터가 더 이상 할당자로부터 샘플을 취득하지 않게 하는 것이다. 이미 샘플의 참조 카운트를 보관 유지하고 있는 필터에는 영향은 없다. 다만, 필터가 샘플을 릴리즈 해, 참조 카운트가 제로가 된 후, 샘플은 사용할 수 없다.

할당자는, 참조 카운트가 제로의 샘플이 있으면 그 샘플에 속하는 메모리를 릴리즈 "할 수 있다". 따라서,Decommit 메서드는, 필터가 그 메모리에의 액세스를 그만두었다고 하는 의미로 메모리를 "릴리즈" 한다. 메모리가 실제로 heap에 돌아올지 어떨지는, 할당자의 처리에 의존하고 있다. 일부의 할당자는, 자신의 소멸자 메서드가 실행될 때까지 대기한다. 다만, 할당자는 자기 자신을 삭제할 경우에, 할당된 메모리를 결코 남겨서는 "안 된다". 따라서, 할당자의 소멸자는 모든 샘플이 릴리즈 될 때까지 대기해야 한다.

참조

↑TOP