IBackgroundCopyError
COM公式ドキュメント
IBackgroundCopyError インターフェイスを使用して、エラーの原因と、転送処理を続行できるかどうかを判断します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
エラーコードを取得し、エラーが発生したコンテキストを特定します。
| pContext | BG_ERROR_CONTEXT* | out | エラーが発生したコンテキスト。コンテキスト値の一覧については、 BG_ERROR_CONTEXT 列挙型を参照してください。 |
| pCode | HRESULT* | out | 発生したエラーのエラーコード。 |
戻り値
このメソッドは、成功した場合は S_OK を返し、エラーの場合は標準の COM HRESULT 値のいずれかを返します。
エラーに関連付けられているファイルオブジェクトへのインターフェイスポインターを取得します。
| pVal | IBackgroundCopyFile** | out | IBackgroundCopyFile インターフェイスポインター。そのメソッドを使用して、エラーに関連付けられたローカルファイル名およびリモートファイル名を判別します。エラーがローカルファイルまたはリモートファイルに関連付けられていない場合、ppFile パラメーターは NULL に設定されます。使用が終わったら ppFile を解放してください。 |
戻り値
このメソッドは次の HRESULT 値を返します。
| 戻り値 | 説明 |
|---|---|
| ファイルオブジェクトへのインターフェイスポインターを正常に取得しました。 | |
| エラーはローカルファイルまたはリモートファイルに関連付けられていません。ppFile パラメーターは NULL に設定されます。 |
エラーに関連付けられたエラーテキストを取得します。
| LanguageId | DWORD | in | 説明の生成に使用するロケールを指定します。言語識別子を作成するには、 MAKELANGID マクロを使用します。たとえば、米国英語を指定するには次のコード例を使用します。
システム既定のユーザー言語識別子を取得するには、次の呼び出しを使用します。
|
| pErrorDescription | LPWSTR* | out | エラーに関連付けられたエラーテキストを格納する NULL 終端文字列。使用が終わったら、 CoTaskMemFree 関数を呼び出して ppErrorDescription を解放してください。 |
戻り値
このメソッドは、次の HRESULT 値のほか、その他の値も返します。
| 戻り値 | 説明 |
|---|---|
| エラーの説明を正常に取得しました。 | |
| 操作を完了するのに十分なメモリがありません。 | |
| LanguageId パラメーターに 0 は指定できません。 | |
|
そのロケールに対応する文字列がありません。 |
解説(Remarks)
エラーコードに関連付けられたエラーテキストを取得するには、 IBackgroundCopyManager::GetErrorDescription メソッドを呼び出すこともできます。
HTTP エラーの説明はローカライズされています。
Windows XP/2000: HTTP エラーの説明はローカライズされません。
例
Handling Errors のトピックにあるサンプルコードを参照してください。
エラーが発生したコンテキストの説明を取得します。
| LanguageId | DWORD | in | 説明の生成に使用するロケールを指定します。言語識別子を作成するには、 MAKELANGID マクロを使用します。たとえば、米国英語を指定するには次のコード例を使用します。
システム既定のユーザー言語識別子を取得するには、次の呼び出しを使用します。
|
| pContextDescription | LPWSTR* | out | エラーが発生したコンテキストの説明を格納する NULL 終端文字列。使用が終わったら、 CoTaskMemFree 関数を呼び出して ppContextDescription を解放してください。 |
戻り値
このメソッドは、次の HRESULT 値のほか、その他の値も返します。
| 戻り値 | 説明 |
|---|---|
| コンテキストの説明を正常に取得しました。 | |
| 操作を完了するのに十分なメモリがありません。 | |
| LanguageId パラメーターに 0 は指定できません。 | |
|
そのロケールに対応する文字列がありません。 |
ファイルの転送に使用されたプロトコルを取得します。リモートファイル名によって、ファイルの転送に使用するプロトコルが決まります。
| pProtocol | LPWSTR* | out | ファイルの転送に使用されたプロトコルを格納する NULL 終端文字列。この文字列は、HTTP プロトコルの場合は "http"、SMB プロトコルの場合は "file" になります。エラーが転送プロトコルに関連しない場合、ppProtocol パラメーターは NULL に設定されます。使用が終わったら、 CoTaskMemFree 関数を呼び出して ppProtocol を解放してください。 |
戻り値
このメソッドは、次の HRESULT 値のほか、その他の値も返します。
| 戻り値 | 説明 |
|---|---|
| リモートファイルのプロトコルを正常に取得しました。 | |
| エラーはリモートファイルの転送プロトコルに関連付けられていません。ppProtocol パラメーターは NULL に設定されます。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IBackgroundCopyError "{19C613A0-FCB8-4F28-81AE-897C3D078F81}" #usecom global IBackgroundCopyError IID_IBackgroundCopyError "{}" #comfunc global IBackgroundCopyError_GetError 3 var,var #comfunc global IBackgroundCopyError_GetFile 4 sptr #comfunc global IBackgroundCopyError_GetErrorDescription 5 int,var #comfunc global IBackgroundCopyError_GetErrorContextDescription 6 int,var #comfunc global IBackgroundCopyError_GetProtocol 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IBackgroundCopyError "{19C613A0-FCB8-4F28-81AE-897C3D078F81}" #usecom global IBackgroundCopyError IID_IBackgroundCopyError "{}" #comfunc global IBackgroundCopyError_GetError 3 sptr,sptr #comfunc global IBackgroundCopyError_GetFile 4 sptr #comfunc global IBackgroundCopyError_GetErrorDescription 5 int,sptr #comfunc global IBackgroundCopyError_GetErrorContextDescription 6 int,sptr #comfunc global IBackgroundCopyError_GetProtocol 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。