Data-Pull 모델 및 Data-Push 모델
비동기 모니커의 클라이언트는 비동기 IMoniker::BindToStorage 작업을 구동하고 비동기 알림을 수신하기 위해 데이터 풀 모델과 데이터 푸시 모델 중에서 선택할 수 있습니다. 데이터 풀 모델에서 클라이언트는 바인딩 작업을 구동하고 모니커는 데이터를 읽을 때만 클라이언트에 제공합니다. 즉, IBindStatusCallback::OnDataAvailable대한 첫 번째 호출 후 클라이언트가 이미 사용 가능한 모든 데이터를 사용하지 않는 한 모니커는 클라이언트에 데이터를 제공하지 않습니다.
데이터가 요청된 경우에만 다운로드되므로 데이터 끌어오기 모델을 선택하는 클라이언트는 이 데이터를 적시에 읽어야 합니다. URL 모니커가인터넷 다운로드의 경우 클라이언트가 너무 오래 기다린 후 더 많은 데이터를 요청하면 바인딩 작업이 실패할 수 있습니다.
데이터 푸시 모델에서 모니커는 비동기 바인딩 작업을 구동하고 새 데이터를 사용할 수 있을 때마다 클라이언트에 지속적으로 알깁니다. 클라이언트는 바인딩 작업 중 어느 시점에서든 데이터를 읽을지 여부를 선택할 수 있지만 모니커는 바인딩 작업을 완료하도록 유도합니다.
또한 비동기 모니커, 특히 다음을 사용할 때 메모리 할당에 대한 COM 규칙을 따라야 합니다.
- COM 인터페이스 또는 함수 호출이 버퍼(문자열 또는 기타)를 클라이언트에 반환할 때마다 클라이언트는 CoTaskMemFree호출하여 메모리를 해제해야 합니다.
- COM 인터페이스 또는 함수에 클라이언트의 버퍼가 필요할 때마다 클라이언트는 CoTaskMemAlloc 사용하여 해당 버퍼를 할당해야 하며 호출 수신자는 이를 해제해야 합니다.
비동기 모니커에 전달되는 문자열 또는 버퍼를 할당할 때는 이러한 규칙을 따라야 하며 비동기 모니커에서 반환된 메모리를 해제해야 합니다. 자세한 내용은 메모리 할당 관리 및 관련 항목을 참조하세요.
관련 항목