PFE_IMPORT_FUNC
コールバックシグネチャ
DWORD PFE_IMPORT_FUNC(
BYTE* pbData,
void* pvCallbackContext,
DWORD* ulLength
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| pbData | BYTE* | 復元するデータのブロックを受け取る、システムが提供するバッファーへのポインターです。 |
| pvCallbackContext | void* | アプリケーションが定義し、割り当てたコンテキストブロックへのポインターです。アプリケーションはこのポインターを WriteEncryptedFileRaw に渡し、WriteEncryptedFileRaw はこのポインターをコールバック関数に渡します。これにより、コールバック関数はアプリケーション固有のデータにアクセスできます。 このデータは構造体にすることができ、暗号化されたファイルのバックアップコピーを格納するファイルのハンドルなど、アプリケーションが必要とする任意のデータを含めることができます。 |
| ulLength | DWORD* | 関数の入口では、このパラメーターはシステムが提供したバッファーの長さを指定します。コールバック関数は、 pbData パラメーターが指すバッファーに、このバイト数を超えて書き込んではなりません。 関数の終了時には、pbData に書き込んだデータのバイト数をこのパラメーターに設定する必要があります。 |
公式ドキュメント
アプリケーション定義のコールバック関数で、 WriteEncryptedFileRaw と共に使用されます。システムは、バックアップファイルのデータの一部を取得するために、 ImportCallback を 1 回以上呼び出します。 ImportCallback はバックアップファイルからデータを順次読み取って復元し、システムはバックアップファイルのデータをすべて読み取るまで、この関数を呼び出し続けます。
PFE_IMPORT_FUNC 型は、このコールバック関数へのポインターを定義します。 ImportCallback は、アプリケーション定義の関数名を表すプレースホルダーです。
戻り値
関数が成功した場合は、戻り値に ERROR_SUCCESS を設定し、ulLength パラメーターが指す値に pbData へコピーしたバイト数を設定する必要があります。
バックアップファイルの末尾に達したときは、ulLength に 0 を設定して、ファイル全体が処理されたことをシステムに通知します。
関数が失敗した場合は、WinError.h で定義されている 0 以外のエラーコードを戻り値に設定します。たとえば、 呼び出した API が失敗したことによりこの関数が失敗した場合は、失敗した API に対する GetLastError の戻り値を設定できます。
解説(Remarks)
システムは、復元するデータがこれ以上ないことをコールバック関数が示すまで、ImportCallback 関数を 呼び出し続けます。復元するデータがこれ以上ないことを示すには、*ulLength に 0 を設定し、戻り値として ERROR_SUCCESS を使用します。アプリケーション定義のコンテキストブロックは、ファイルハンドルやファイル内の現在のオフセットなどの情報を内部で追跡するために使用できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)