UDF > WinAPIEx > Files & Devices > DataAccess & Storage >


_WinAPI_BackupWriteAbort

Termine l'utilisation de _WinAPI_BackupWrite() au niveau du handle

#include <WinAPIFiles.au3>
_WinAPI_BackupWriteAbort ( ByRef $pContext )

Paramètre

$pContext Le pointeur sur une structure de données interne utilisée par la fonction _WinAPI_BackupWrite() pour conserver les informations de contexte pendant l'opération de restauration.

Valeur de retour

Succès: Retourne True.
Échec: Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur.

En relation

_WinAPI_BackupWrite

Voir aussi

Consultez BackupWrite dans la librairie MSDN.

Exemple

#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <WinAPIHObj.au3>
#include <WinAPIMem.au3>
#include <WinAPIProc.au3>
#include <WinAPIShPath.au3>

Local Const $sFile = @ScriptFullPath

; Active les droits "SeBackupPrivilege" et "SeRestorePrivilege" pour effectuer la sauvegarde et la restauration
Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
Local $aAdjust, $aPrivileges[2] = [$SE_BACKUP_NAME, $SE_RESTORE_NAME]
_WinAPI_AdjustTokenPrivileges($hToken, $aPrivileges, $SE_PRIVILEGE_ENABLED, $aAdjust)
If @error Or @extended Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Vous n'vez pas les droits requis.')
    Exit
EndIf

; Crée un tampon de mémoire dans lequel stocker les données de sauvegarde
Local $iBytes = 4096 + FileGetSize($sFile)
Local $pBuffer = _WinAPI_CreateBuffer($iBytes)

; Sauvegarde un fichier, y compris les informations de sécurité
Local $pContext = 0
Local $hFile = _WinAPI_CreateFileEx($sFile, $OPEN_EXISTING, $GENERIC_READ)
If Not _WinAPI_BackupRead($hFile, $pBuffer, $iBytes, $iBytes, $pContext, 1) Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Impossible de faire un backup du fichier.')
    Exit
EndIf
_WinAPI_BackupReadAbort($pContext)
_WinAPI_CloseHandle($hFile)

; Restaure un fichier (.bak) et les données de l'ACL
$pContext = 0
$hFile = _WinAPI_CreateFileEx(_WinAPI_PathRenameExtension($sFile, '.bak'), $CREATE_ALWAYS, BitOR($GENERIC_WRITE, $WRITE_DAC, $WRITE_OWNER))
If Not _WinAPI_BackupWrite($hFile, $pBuffer, $iBytes, $iBytes, $pContext, 1) Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Impossible de restaurer le fichier.')
    Exit
EndIf
_WinAPI_BackupWriteAbort($pContext)
_WinAPI_CloseHandle($hFile)

; Libére la mémoire utilisée
_WinAPI_FreeMemory($pBuffer)

; Restaure les droits par défaut "SeBackupPrivilege" et "SeRestorePrivilege
_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)