BackupWrite 関数 (winbase.h)
BackupWrite 関数を使用すると、BackupRead を使用してバックアップされたファイルまたはディレクトリを復元できます。 ReadFile 関数を使用してバックアップ メディアからデータのストリームを取得し、BackupWrite を使用して指定したファイルまたはディレクトリにデータを書き込みます。
構文
BOOL BackupWrite(
[in] HANDLE hFile,
[in] LPBYTE lpBuffer,
[in] DWORD nNumberOfBytesToWrite,
[out] LPDWORD lpNumberOfBytesWritten,
[in] BOOL bAbort,
[in] BOOL bProcessSecurity,
[out] LPVOID *lpContext
);
パラメーター
[in] hFile
復元するファイルまたはディレクトリを処理します。 ハンドルを取得するには、 CreateFile 関数を呼び出します。 ファイル ハンドルが ACCESS_SYSTEM_SECURITY アクセス権で作成されていない限り、SACL は復元されません。 整合性 ACE が正しく復元されるようにするには、 WRITE_OWNER アクセス権 を使用してファイル ハンドルも作成されている必要があります。 詳細については、「 ファイルのセキュリティとアクセス権」を参照してください。
ハンドルは同期 (オーバーラップされていない) である必要があります。 つまり、CreateFile を呼び出すときに、FILE_FLAG_OVERLAPPED フラグを設定することはできません。 この関数では、受信したハンドルが同期的であることを検証しないため、同期ハンドルのエラー コードは返されませんが、非同期 (重複) ハンドルを使用して呼び出すと、デバッグが非常に困難な微妙なエラーが発生する可能性があります。
フラグ FILE_FLAG_NO_BUFFERINGで CreateFile が呼び出された場合、BackupWrite 関数が失敗する可能性があります。 この場合、 GetLastError 関数は ERROR_INVALID_PARAMETER値を返します。
[in] lpBuffer
関数がデータを書き込むバッファーへのポインター。
[in] nNumberOfBytesToWrite
バッファーのサイズ (バイト単位)。 バッファー サイズは、 WIN32_STREAM_ID 構造体のサイズより大きくする必要があります。
[out] lpNumberOfBytesWritten
書き込まれたバイト数を受け取る変数へのポインター。
[in] bAbort
ハンドルでの BackupWrite の使用が完了したかどうかを示します。 ファイルの復元中に、このパラメーターを FALSE に指定 します。 BackupWrite の使用が完了したら、このパラメーターに TRUE を指定し、適切な lpContext を渡して BackupWrite をもう一度呼び出す必要があります。 bAbort が TRUE の場合、lpContext を渡す必要があります。その他のすべてのパラメーターは無視されます。
[in] bProcessSecurity
関数がファイルまたはディレクトリのアクセス制御リスト (ACL) データを復元するかどうかを指定します。
bProcessSecurity が TRUE の場合は、ファイルまたはディレクトリ ハンドルを開くときにWRITE_OWNERとWRITE_DACアクセスを指定する必要があります。 ハンドルにこれらのアクセス権がない場合、オペレーティング システムは ACL データへのアクセスを拒否し、ACL データの復元は行われません。
[out] lpContext
復元操作中にコンテキスト情報を維持するために BackupWrite によって使用される内部データ構造へのポインターを受け取る変数へのポインター。
指定したファイルまたはディレクトリに対して BackupWrite を最初に呼び出す前に、lpContext が指す変数を NULL に設定する必要があります。 関数は、データ構造にメモリを割り当て、その構造体を指す変数を設定します。 BackupWrite の呼び出しの間に lpContext またはそれが指す変数を変更することはできません。
データ構造で使用されるメモリを解放するには、復元操作が完了したときに bAbort パラメーターを TRUE に設定して BackupWrite を呼び出します。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合、戻り値は 0 で、I/O エラーが発生したことを示します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
この関数は、暗号化されたファイル システムで暗号化されたファイルを復元する際に使用するためのものではありません。 その目的 で WriteEncryptedFileRaw を使用します。
バックアップ メディアから読み取られるデータは、 WIN32_STREAM_ID 構造で区切られたサブストリームである必要があります。
BACKUP_LINK ストリームの種類を使用すると、ハード リンクを含むファイルを復元できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |