From bc0826654ac52f0b049abad877524263d0f626d9 Mon Sep 17 00:00:00 2001 From: kris Date: Tue, 17 Jun 2008 21:02:40 +0000 Subject: [PATCH] The WinPcap Windows installer now has x64 npf.sys support. Thanks for Rob Nicholls for the patch. --- mswin32/winpcap/winpcap-nmap.nsi | 36 ++++++++++++++++++++++++++++++- mswin32/winpcap/x64/npf.sys | Bin 0 -> 40464 bytes 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 mswin32/winpcap/x64/npf.sys diff --git a/mswin32/winpcap/winpcap-nmap.nsi b/mswin32/winpcap/winpcap-nmap.nsi index a54e9e6ea..67e05b70b 100644 --- a/mswin32/winpcap/winpcap-nmap.nsi +++ b/mswin32/winpcap/winpcap-nmap.nsi @@ -155,6 +155,7 @@ FunctionEnd Function un.registerServiceSC nsExec::Exec "sc stop npf" + nsExec::Exec "sc delete npf" FunctionEnd Function autoStartWinPcap @@ -196,7 +197,23 @@ Section "WinPcap" SecWinPcap install: SetOutPath $SYSDIR\drivers - File npf.sys + ; check for x64, install the correct npf.sys file into system32\drivers + System::Call "kernel32::GetCurrentProcess() i .s" + System::Call "kernel32::IsWow64Process(i s, *i .r0)" + StrCmp $0 "0" is32bit is64bit + + is32bit: + File npf.sys ; x86 NT5/NT6 version + Goto npfdone + + is64bit: + ; disable Wow64FsRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i0) + File x64\npf.sys ; x64 NT5/NT6 version + ; re-enable Wow64FsRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i1) + + npfdone: ; Install some basic registry keys WriteRegStr HKLM "Software\WinPcap" "" '"$INSTDIR"' @@ -241,8 +258,25 @@ Section "Uninstall" Delete $SYSDIR\WanPacket.dll Delete $SYSDIR\wpcap.dll + ; check for x64, delete npf.sys file from system32\drivers + System::Call "kernel32::GetCurrentProcess() i .s" + System::Call "kernel32::IsWow64Process(i s, *i .r0)" + StrCmp $0 "0" del32bitnpf del64bitnpf + del64bitnpf: + ; disable Wow64FsRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i0) + Delete $SYSDIR\drivers\npf.sys + ; re-enable Wow64FsRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i1) + Goto npfdeleted + del32bitnpf: + + Delete $SYSDIR\drivers\npf.sys + + npfdeleted: + RMDir "$INSTDIR" SectionEnd diff --git a/mswin32/winpcap/x64/npf.sys b/mswin32/winpcap/x64/npf.sys new file mode 100644 index 0000000000000000000000000000000000000000..ec165d5214ae2facb786278f55bb5a0517dca045 GIT binary patch literal 40464 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 LoV(6^3-12`5}QVh literal 0 HcmV?d00001