Pārlūkot izejas kodu

Add two TRedir<T> use examples.

Martijn Laan 3 mēneši atpakaļ
vecāks
revīzija
6b4742c28f
1 mainītis faili ar 9 papildinājumiem un 29 dzēšanām
  1. 9 29
      Projects/Src/SetupLdrAndSetup.RedirFunc.pas

+ 9 - 29
Projects/Src/SetupLdrAndSetup.RedirFunc.pas

@@ -195,41 +195,21 @@ end;
 function CreateFileRedir(const DisableFsRedir: Boolean; const FileName: String;
   const DesiredAccess, ShareMode: DWORD; const SecurityAttributes: PSecurityAttributes;
   const CreationDisposition, FlagsAndAttributes: DWORD; TemplateFile: THandle): THandle;
-var
-  PrevState: TPreviousFsRedirectionState;
-  ErrorCode: DWORD;
 begin
-  if not DisableFsRedirectionIf(DisableFsRedir, PrevState) then begin
-    Result := INVALID_HANDLE_VALUE;
-    Exit;
-  end;
-  try
-    Result := CreateFile(PChar(Filename), DesiredAccess, ShareMode, SecurityAttributes,
-      CreationDisposition, FlagsAndAttributes, TemplateFile);
-    ErrorCode := GetLastError;
-  finally
-    RestoreFsRedirection(PrevState);
-  end;
-  SetLastError(ErrorCode);
+  Result := TRedir<THandle>.RedirIf(DisableFsRedir, INVALID_HANDLE_VALUE, function: THandle
+    begin
+      Result := CreateFile(PChar(Filename), DesiredAccess, ShareMode, SecurityAttributes,
+        CreationDisposition, FlagsAndAttributes, TemplateFile);
+    end);
 end;
 
 function CreateDirectoryRedir(const DisableFsRedir: Boolean; const Filename: String;
   const SecurityAttributes: PSecurityAttributes): BOOL;
-var
-  PrevState: TPreviousFsRedirectionState;
-  ErrorCode: DWORD;
 begin
-  if not DisableFsRedirectionIf(DisableFsRedir, PrevState) then begin
-    Result := False;
-    Exit;
-  end;
-  try
-    Result := CreateDirectory(PChar(Filename), SecurityAttributes);
-    ErrorCode := GetLastError;
-  finally
-    RestoreFsRedirection(PrevState);
-  end;
-  SetLastError(ErrorCode);
+  Result := TRedir<BOOL>.RedirIf(DisableFsRedir, function: BOOL
+    begin
+      Result := CreateDirectory(PChar(Filename), SecurityAttributes);
+  	end);
 end;
 
 function CreateProcessRedir(const DisableFsRedir: Boolean;