Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. ULONG CreateAndOverwrite(PHANDLE FileHandle, PCWSTR FileName)
  2. {
  3.     ULONG err;
  4.  
  5.     do
  6.     {
  7.         HANDLE hFile = CreateFile(FileName, FILE_APPEND_DATA, FILE_SHARE_VALID_FLAGS, 0,
  8.             CREATE_ALWAYS, FILE_FLAG_BACKUP_SEMANTICS, 0);
  9.  
  10.         if (hFile != INVALID_HANDLE_VALUE)
  11.         {
  12.             *FileHandle = hFile;
  13.             return NOERROR;
  14.         }
  15.  
  16.         if ((err = GetLastError()) != ERROR_ACCESS_DENIED)
  17.         {
  18.             return err;
  19.         }
  20.  
  21.         hFile = CreateFile(FileName, FILE_WRITE_ATTRIBUTES , FILE_SHARE_VALID_FLAGS, 0,
  22.             OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_OPEN_REPARSE_POINT, 0);
  23.  
  24.         if (hFile == INVALID_HANDLE_VALUE)
  25.         {
  26.             return GetLastError();
  27.         }
  28.  
  29.         static FILE_BASIC_INFO fbi = { {}, {}, {}, {}, FILE_ATTRIBUTE_NORMAL };
  30.        
  31.         err = SetFileInformationByHandle(hFile, FileBasicInfo, &fbi, sizeof(fbi)) ? NOERROR : GetLastError();
  32.  
  33.         CloseHandle(hFile);
  34.  
  35.     } while (err == NOERROR);
  36.  
  37.     return err;
  38. }
  39.  
  40.  
  41.     HANDLE hFile;
  42.     if (NOERROR == CreateAndOverwrite(&hFile, L"***"))
  43.     {
  44.         // ...
  45.         CloseHandle(hFile);
  46.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement