非同期モニカーのクライアントは、非同期 IMoniker::BindToStorage 操作を駆動し、非同期通知を受信するためのデータ プル モデルとデータ プッシュ モデルのどちらかを選択できます。 データ プル モデルでは、クライアントはバインド操作を実行し、モニカーは読み取り時にのみクライアントにデータを提供します。 つまり、IBindStatusCallback::OnDataAvailable を最初に呼び出した後、クライアントが既に使用可能なすべてのデータを使用していない限り、モニカーはクライアントにデータを提供しません。
データは要求されたときにのみダウンロードされるため、データ プル モデルを選択するクライアントは、このデータをタイムリーに読み取る必要があります。 URL モニカーがインターネットダウンロードの場合、クライアントが待ち時間が長すぎてデータを要求しないと、バインド操作が失敗する可能性があります。
データ プッシュ モデルでは、モニカーは非同期バインド操作を実行し、新しいデータが使用可能になると常にクライアントに継続的に通知します。 クライアントは、バインド操作中に任意の時点でデータを読み取るかどうかを選択できますが、モニカーは、バインド操作を完了に追い込みます。
また、非同期モニカーを使用する場合は、メモリ割り当ての COM 規則に従う必要があります。具体的には次のとおりです。
- COM インターフェイスまたは関数呼び出しがクライアントにバッファー (文字列またはその他) を返すたびに、クライアントは CoTaskMemFree呼び出すことによってメモリを解放する必要があります。
- COM インターフェイスまたは関数がクライアントからのバッファーを必要とする場合は常に、クライアントは CoTaskMemAlloc使用してそのバッファーを割り当てる必要があり、呼び出し先はそれを解放する必要があります。
非同期モニカーに渡される文字列またはバッファーを割り当てるときは、必ずこれらの規則に従い、非同期モニカーによって返されるメモリを解放してください。 詳細については、「メモリ割り当て の管理」および関連トピックを参照してください。
関連トピック
-
非同期モニカー の