다음을 통해 공유


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_BUFFERINGCreateFile이 호출된 경우 BackupWrite 함수가 실패할 수 있습니다. 이 경우 GetLastError 함수는 ERROR_INVALID_PARAMETER 값을 반환합니다.

[in] lpBuffer

함수가 데이터를 쓰는 버퍼에 대한 포인터입니다.

[in] nNumberOfBytesToWrite

버퍼의 크기(바이트)입니다. 버퍼 크기는 WIN32_STREAM_ID 구조체의 크기보다 커야 합니다.

[out] lpNumberOfBytesWritten

기록된 바이트 수를 수신하는 변수에 대한 포인터입니다.

[in] bAbort

핸들에서 BackupWrite 사용을 완료했는지 여부를 나타냅니다. 파일을 복원하는 동안 이 매개 변수를 FALSE로 지정 합니다. BackupWrite 사용을 완료한 후에는 BackupWrite를 한 번 더 호출하여 이 매개 변수에 TRUE를 지정하고 적절한 lpContext를 전달해야 합니다. bAbort가 TRUE이면 lpContext를 전달해야 합니다. 다른 모든 매개 변수는 무시됩니다.

[in] bProcessSecurity

함수가 파일 또는 디렉터리에 대한 ACL(액세스 제어 목록) 데이터를 복원할지 여부를 지정합니다.

bProcessSecurityTRUE인 경우 파일 또는 디렉터리 핸들을 열 때 WRITE_OWNER 지정하고 액세스를 WRITE_DAC 합니다. 핸들에 이러한 액세스 권한이 없으면 운영 체제에서 ACL 데이터에 대한 액세스를 거부하고 ACL 데이터 복원이 수행되지 않습니다.

[out] lpContext

복원 작업 중에 컨텍스트 정보를 유지하기 위해 BackupWrite에서 사용하는 내부 데이터 구조에 대한 포인터를 수신하는 변수에 대한 포인터입니다.

지정된 파일 또는 디렉터리에 대해 BackupWrite를 처음 호출하기 전에 lpContext가 가리키는 변수를 NULL로 설정해야 합니다. 함수는 데이터 구조에 대한 메모리를 할당한 다음 해당 구조를 가리키도록 변수를 설정합니다. lpContext 또는 BackupWrite 호출 간에 가리키는 변수를 변경해서는 안 됩니다.

데이터 구조에서 사용하는 메모리를 해제하려면 복원 작업이 완료되면 bAbort 매개 변수가 TRUE로 설정된 BackupWrite를 호출합니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값이 0으로 I/O 오류가 발생했음을 나타냅니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

이 함수는 암호화된 파일 시스템에서 암호화된 파일을 복원하는 데 사용되지 않습니다. 해당 용도 로 WriteEncryptedFileRaw 를 사용합니다.

백업 매체에서 읽은 데이터는 하위 스트림을 WIN32_STREAM_ID 구조로 구분해야 합니다.

BACKUP_LINK 스트림 유형을 사용하면 하드 링크가 있는 파일을 복원할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

BackupRead

BackupSeek

CreateFile

WIN32_STREAM_ID

WriteEncryptedFileRaw