Skip to content

Commit 9087004

Browse files
committed
IDE: Use static imports for Wow64*Wow64FsRedirection.
1 parent 7c69e62 commit 9087004

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

Projects/Src/IDE.MainForm.ToolsHelper.pas

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,16 @@ implementation
3838
IDE.Messages, IDE.HelperFunc, IDE.ScintStylerInnoSetup, IDE.SignToolsForm, IDE.MsgBoxDesignerForm,
3939
IDE.FilesDesignerForm, IDE.RegistryDesignerForm, IDE.Wizard.WizardFormRegistryHelper;
4040

41+
{$IFNDEF WIN64}
42+
function Wow64DisableWow64FsRedirection_static(var OldValue: PVOID): BOOL; stdcall;
43+
external kernel32 name 'Wow64DisableWow64FsRedirection';
44+
function Wow64RevertWow64FsRedirection_static(OldValue: PVOID): BOOL; stdcall;
45+
external kernel32 name 'Wow64RevertWow64FsRedirection';
46+
{$ENDIF}
47+
4148
procedure TMainFormToolsHelper.StartAddRemovePrograms;
4249
var
4350
Dir: String;
44-
Wow64DisableWow64FsRedirectionFunc: function(var OldValue: Pointer): BOOL; stdcall;
45-
Wow64RevertWow64FsRedirectionFunc: function(OldValue: Pointer): BOOL; stdcall;
46-
RedirDisabled: Boolean;
47-
RedirOldValue: Pointer;
4851
StartupInfo: TStartupInfo;
4952
ProcessInfo: TProcessInformation;
5053
begin
@@ -56,20 +59,19 @@ procedure TMainFormToolsHelper.StartAddRemovePrograms;
5659
appwiz.cpl is buggy on XP x64 RC2 -- it doesn't show any Change/Remove
5760
buttons on 64-bit MSI entries, and it doesn't list non-MSI 64-bit apps
5861
at all. }
59-
Wow64DisableWow64FsRedirectionFunc := GetProcAddress(GetModuleHandle(kernel32),
60-
'Wow64DisableWow64FsRedirection');
61-
Wow64RevertWow64FsRedirectionFunc := GetProcAddress(GetModuleHandle(kernel32),
62-
'Wow64RevertWow64FsRedirection');
63-
RedirDisabled := Assigned(Wow64DisableWow64FsRedirectionFunc) and
64-
Assigned(Wow64RevertWow64FsRedirectionFunc) and
65-
Wow64DisableWow64FsRedirectionFunc(RedirOldValue);
62+
{$IFNDEF WIN64}
63+
var RedirOldValue: PVOID;
64+
const RedirDisabled = Wow64DisableWow64FsRedirection_static(RedirOldValue);
6665
try
66+
{$ENDIF}
6767
Win32Check(CreateProcess(nil, PChar('"' + AddBackslash(Dir) + 'control.exe" appwiz.cpl'),
6868
nil, nil, False, 0, nil, PChar(Dir), StartupInfo, ProcessInfo));
69+
{$IFNDEF WIN64}
6970
finally
7071
if RedirDisabled then
71-
Wow64RevertWow64FsRedirectionFunc(RedirOldValue);
72+
Wow64RevertWow64FsRedirection_static(RedirOldValue);
7273
end;
74+
{$ENDIF}
7375
CloseHandle(ProcessInfo.hProcess);
7476
CloseHandle(ProcessInfo.hThread);
7577
end;

0 commit comments

Comments
 (0)