CAsyncMonikerFile クラス

ActiveX コントロール (以前の OLE コントロール) で非同期モニカーを使用するための機能が用意されています。

構文

class CAsyncMonikerFile : public CMonikerFile

メンバー

パブリック コンストラクター

名前 説明
CAsyncMonikerFile::CAsyncMonikerFile CAsyncMonikerFile オブジェクトを構築します。

パブリック メソッド

名前 説明
CAsyncMonikerFile::Close すべてのリソースを閉じて解放します。
CAsyncMonikerFile::GetBinding 非同期転送バインディングへのポインターを取得します。
CAsyncMonikerFile::GetFormatEtc ストリーム内のデータの形式を取得します。
CAsyncMonikerFile::Open ファイルを非同期的に開きます。

保護メソッド

名前 説明
CAsyncMonikerFile::CreateBindStatusCallback を実装する COM オブジェクトを作成します IBindStatusCallback
CAsyncMonikerFile::GetBindInfo 作成するバインドの種類に関する情報を要求するために、OLE システム ライブラリによって呼び出されます。
CAsyncMonikerFile::GetPriority バインドの優先順位を取得するために OLE システム ライブラリによって呼び出されます。
CAsyncMonikerFile::OnDataAvailable 非同期バインド操作中にクライアントが使用できるようになると、データを提供するために呼び出されます。
CAsyncMonikerFile::OnLowResource リソースが不足しているときに呼び出されます。
CAsyncMonikerFile::OnProgress データのダウンロード プロセスの進行状況を示すために呼び出されます。
CAsyncMonikerFile::OnStartBinding バインドの開始時に呼び出されます。
CAsyncMonikerFile::OnStopBinding 非同期転送が停止されたときに呼び出されます。

解説

COleStreamFile から派生した CMonikerFile から派生し、IMoniker インターフェイスを使用して、 CAsyncMonikerFile URL からファイルを非同期的に読み込むなど、データ ストリームに非同期的にアクセスします。 ファイルには、ActiveX コントロールのデータパス プロパティを指定できます。

非同期モニカーは、主にインターネット対応アプリケーションと ActiveX コントロールで使用され、ファイル転送中に応答性の高いユーザー インターフェイスを提供します。 その代表的な例が、ActiveX コントロールに非同期のプロパティを提供する CDataPathProperty の使用です。 オブジェクトは CDataPathProperty 、長いプロパティ交換プロセス中に新しいデータの可用性を示すコールバックを繰り返し取得します。

インターネット アプリケーションで非同期モニカーと ActiveX コントロールを使用する方法の詳細については、次の記事を参照してください。

継承階層

CObject

Cfile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

必要条件

ヘッダー: afxole.h

CAsyncMonikerFile::CAsyncMonikerFile

CAsyncMonikerFile オブジェクトを構築します。

CAsyncMonikerFile();

解説

インターフェイスは IBindHost 作成されません。 IBindHost は、メンバー関数で指定した Open 場合にのみ使用されます。

インターフェイスの IBindHost 詳細については、Windows SDK を参照してください。

CAsyncMonikerFile::Close

この関数を呼び出して、すべてのリソースを閉じて解放します。

virtual void Close();

解説

開いていないファイルまたは既に閉じているファイルで呼び出すことができます。

CAsyncMonikerFile::CreateBindStatusCallback

を実装する COM オブジェクトを作成します IBindStatusCallback

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

パラメーター

pUnkControlling
集計が使用されていない場合は、制御する不明 (外側 IUnknown) または NULL へのポインター。

戻り値

pUnkControlling が NULL でない場合、関数はサポートIBindStatusCallbackする新しい COM オブジェクトの内部IUnknownへのポインターを返します。 NULL の場合pUnkControlling、関数は、サポートIBindStatusCallbackする新しい COM オブジェクトへのポインターIUnknownを返します。

解説

CAsyncMonikerFile を実装する COM オブジェクトが必要です IBindStatusCallback。 MFC はこのようなオブジェクトを実装し、集計可能です。 オーバーライド CreateBindStatusCallback して、独自の COM オブジェクトを返すことができます。 COM オブジェクトは、制御する不明な COM オブジェクトを使用して呼び出 CreateBindStatusCallback すことによって、MFC の実装を集計できます。 COM サポートを CCmdTarget 使用して実装された COM オブジェクトは、 CCmdTarget::GetControllingUnknown.

または、COM オブジェクトを呼び出 CreateBindStatusCallback( NULL )すことによって MFC の実装に委任できます。

CAsyncMonikerFile::Open 呼び出し CreateBindStatusCallback

非同期モニカーと非同期バインディングの詳細については、「 IBindStatusCallback インターフェイス」および「非同期バインディングと ストレージのしくみ」を参照してください。 集計の詳細については、「集計」を参照してください。 3 つのトピックはすべて Windows SDK に含まれています。

CAsyncMonikerFile::GetBindInfo

非同期モニカーのクライアントから呼び出され、非同期モニカーにバインドする方法を伝えます。

virtual DWORD GetBindInfo() const;

戻り値

の設定を取得します IBindStatusCallBack。 インターフェイスの IBindStatusCallback 詳細については、Windows SDK を参照してください。

解説

既定の実装では、バインディングを非同期に設定し、ストレージ メディア (ストリーム) を使用し、データ プッシュ モデルを使用します。 バインディングの動作を変更する場合は、この関数をオーバーライドします。

これを行う理由の 1 つは、データ プッシュ モデルではなく、データ プル モデルを使用してバインドすることです。 データ プル モデルでは、クライアントはバインド操作を実行し、モニカーは読み取り時にのみデータをクライアントに提供します。 データ プッシュ モデルでは、モニカーは非同期バインド操作を実行し、新しいデータが使用可能になると常にクライアントに継続的に通知します。

CAsyncMonikerFile::GetBinding

非同期転送バインディングへのポインターを取得するには、この関数を呼び出します。

IBinding* GetBinding() const;

戻り値

非同期転送の開始時に IBinding 提供されるインターフェイスへのポインター。 何らかの理由で転送を非同期に実行できない場合は NULL を返します。

解説

これにより、インターフェイスを介してデータ転送プロセスをIBinding制御できます(例: IBinding::Abort.IBinding::Pause、.IBinding::Resume

インターフェイスの IBinding 詳細については、Windows SDK を参照してください。

CAsyncMonikerFile::GetFormatEtc

ストリーム内のデータの形式を取得するには、この関数を呼び出します。

FORMATETC* GetFormatEtc() const;

戻り値

現在開いているストリームの Windows 構造体 FORMATETC へのポインター。 モニカーがバインドされていない場合、非同期でない場合、または非同期操作が開始されていない場合は NULL を返します。

CAsyncMonikerFile::GetPriority

バインディング 処理がバインディング操作のスレッドに与えられた優先順位の受信を開始すると、非同期モニカーのクライアントから呼び出されます。

virtual LONG GetPriority() const;

戻り値

非同期転送が行われる優先順位。 標準スレッド優先度フラグの 1 つ:THREAD_PRIORITY_ABOVE_NORMAL、THREAD_PRIORITY_BELOW_NORMAL、THREAD_PRIORITY_HIGHEST、THREAD_PRIORITY_IDLE、THREAD_PRIORITY_LOWEST、THREAD_PRIORITY_NORMAL、およびTHREAD_PRIORITY_TIME_CRITICAL。 これらの値の説明については、Windows 関数 SetThreadPriority を参照してください。

解説

GetPriority を直接呼び出すべきではありません。 THREAD_PRIORITY_NORMALは、既定の実装によって返されます。

CAsyncMonikerFile::OnDataAvailable

非同期のバインド操作中に、使用可能になったときにクライアントにデータを提供する非同期モニカー呼び出し OnDataAvailable

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

パラメーター

dwSize
バインディングの開始以降に使用可能なデータの累積量 (バイト単位)。 0 を指定できます。データ量が操作に関連しないか、特定の量が使用できなくなったことを示します。

bscfFlag
BSCF 列挙値。 次の値のうち 1 つ以上を指定できます。

  • BSCF_FIRSTDATANOTIFICATION 特定のバインド操作に対する OnDataAvailable 最初の呼び出しを識別します。

  • BSCF_INTERMEDIATEDATANOTIFICATION バインド操作の中間呼び出し OnDataAvailable を識別します。

  • BSCF_LASTDATANOTIFICATION バインド操作の最後の呼び出し OnDataAvailable を識別します。

解説

この関数の既定の実装は、何も行いません。 実装例については、次の例を参照してください。

void CMyMoniker::OnDataAvailable(DWORD dwSize, DWORD bscfFlag)
{
   if ((bscfFlag & BSCF_FIRSTDATANOTIFICATION) != 0)
   {
      m_dwReadBefore = 0;
      m_strText.Empty();
   }

   DWORD dwArriving = dwSize - m_dwReadBefore;

   if (dwArriving > 0)
   {
      int nLen = m_strText.GetLength();
      ASSERT((DWORD)nLen == m_dwReadBefore);
      LPTSTR psz = m_strText.GetBuffer(nLen + dwArriving);
      Read(psz + nLen, dwArriving);
      m_strText.ReleaseBuffer(nLen + dwArriving);
      m_dwReadBefore = dwSize;
   }
}

CAsyncMonikerFile::OnLowResource

リソースが少ない場合にモニカーによって呼び出されます。

virtual void OnLowResource();

解説

既定の実装呼び出し GetBinding( )-> Abort( )

CAsyncMonikerFile::OnProgress

このバインド操作の現在の進行状況を示すためにモニカーによって繰り返し呼び出されます。通常は、長い操作中に妥当な間隔で呼び出されます。

virtual void OnProgress(
    ULONG ulProgress,
    ULONG ulProgressMax,
    ULONG ulStatusCode,
    LPCTSTR szStatusText);

パラメーター

ulProgress
ulProgressMax で示される 予想される最大値に対するバインド操作の現在の進行状況を示します

ulProgressMax
この操作の呼び出しの間、 ulProgress の予想される最大値を OnProgress 示します。

ulStatusCode
バインド操作の進行状況に関する追加情報を提供します。 有効な値は列挙から BINDSTATUS 取得されます。 使用可能な値については、「解説」を参照してください。

szStatusText
ulStatusCode の値に応じて、現在の進行状況に関する情報。 使用可能な値については、「解説」を参照してください。

解説

ulStatusCode (および各値szStatusText) に使用できる値は次のとおりです。

Value 説明
BINDSTATUS_FINDINGRESOURCE バインド操作では、バインドされているオブジェクトまたはストレージを保持するリソースが見つかっています。 szStatusText は、検索対象のリソースの表示名を提供します (例: "www.microsoft.com")。
BINDSTATUS_CONNECTING バインド操作は、バインドされているオブジェクトまたはストレージを保持するリソースに接続しています。 szStatusText、接続先のリソースの表示名 (IP アドレスなど) を提供します。
BINDSTATUS_Standard Edition NDINGREQUEST バインド操作は、バインドされているオブジェクトまたはストレージを要求しています。 szStatusText は、オブジェクトの表示名 (ファイル名など) を提供します。
BINDSTATUS_REDIRECTING バインド操作が別のデータの場所にリダイレクトされました。 szStatusText は、新しいデータの場所の表示名を提供します。
BINDSTATUS_USINGCACHEDCOPY バインド操作は、キャッシュされたコピーから要求されたオブジェクトまたはストレージを取得しています。 szStatusText が NULL です。
BINDSTATUS_BEGINDOWNLOADDATA バインド操作が、バインドされているオブジェクトまたはストレージの受信を開始しました。 szStatusText は、データの場所の表示名を提供します。
BINDSTATUS_DOWNLOADINGDATA バインド操作は、バインドされているオブジェクトまたはストレージを引き続き受け取ります。 szStatusText は、データの場所の表示名を提供します。
BINDSTATUS_ENDDOWNLOADDATA バインド操作は、バインドされているオブジェクトまたはストレージの受信を完了しました。 szStatusText は、データの場所の表示名を提供します。
BINDSTATUS_CLASSIDAVAILABLE バインド先のオブジェクトのインスタンスが作成されようとしています。 szStatusText、新しいオブジェクトの CLSID を文字列形式で提供するため、クライアントは必要に応じてバインド操作を取り消すことができます。

CAsyncMonikerFile::OnStartBinding

バインドの開始時にアクションを実行するには、派生クラスでこの関数をオーバーライドします。

virtual void OnStartBinding();

解説

この関数はモニカーによって呼び出されます。 既定の実装では、何も行われません。

CAsyncMonikerFile::OnStopBinding

バインド操作の終了時にモニカーによって呼び出されます。

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

パラメーター

hresult
エラー値または警告値である HRESULT。

szErrort
エラーを説明する文字列。

解説

転送が停止したときにアクションを実行するには、この関数をオーバーライドします。 既定では、関数は解放されます IBinding

インターフェイスの IBinding 詳細については、Windows SDK を参照してください。

CAsyncMonikerFile::Open

このメンバー関数を呼び出して、ファイルを非同期的に開きます。

virtual BOOL Open(
    LPCTSTR lpszURL,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

パラメーター

lpszURL
非同期で開くファイルへのポインター。 ファイルには、任意の有効な URL またはファイル名を指定できます。

pError
ファイル例外へのポインター。 エラーが発生した場合は、原因に設定されます。

pMoniker
非同期モニカー インターフェイス IMonikerへのポインター。ドキュメント独自のモニカーを組み合わせた正確なモニカーで、これを使用して取得 IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER)でき、パス名から作成されたモニカーです。 コントロールはこのモニカーを使用してバインドできますが、これはコントロールが保存する必要があるモニカーではありません。

pBindHost
潜在的に IBindHost 相対パス名からモニカーを作成するために使用されるインターフェイスへのポインター。 バインド ホストが無効であるか、モニカーを提供しない場合、呼び出しは既定 Open(lpszFileName,pError)で . インターフェイスの IBindHost 詳細については、Windows SDK を参照してください。

pServiceProvider
IServiceProvider インターフェイスへのポインター。 サービス プロバイダーが無効であるか、サービスの IBindHost提供に失敗した場合、呼び出しは既定 Open(lpszFileName,pError)で .

pUnknown
IUnknown インターフェイスへのポインター。 見つかった場合 IServiceProvider 、関数 IBindHostは . サービス プロバイダーが無効であるか、サービスの IBindHost提供に失敗した場合、呼び出しは既定 Open(lpszFileName,pError)で .

戻り値

ファイルが正常に開かれた場合は 0 以外。それ以外の場合は 0。

解説

この呼び出しにより、バインド プロセスが開始されます。

lpszURL パラメーターには URL またはファイル名を使用できます。 次に例を示します。

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("http://www.microsoft.com"));

または

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("file:c:\\mydata.dat"));

関連項目

CMonikerFile クラス
階層図
CMonikerFile クラス
CDataPathProperty クラス