]> git.ipfire.org Git - thirdparty/pciutils.git/blame - README.Windows
ls-ecaps: Correct the link state reporting
[thirdparty/pciutils.git] / README.Windows
CommitLineData
ee7d8384
MM
1Since 2.1.99-test5, pciutils should also be compilable on Windows. Thanks
2to Alexander Stock for contributing the port.
c0eece92 3
09156b3b
MM
4Updated after version 2.2.6 to compile again, and with MinGW, even (only?)
5cross-compiling. (Hopefully it works with MSVC too.)
6
b8773677
PR
7For simple listing PCI devices in system via win32-cfgmgr32 access method
8which provides only basic information and emulated config space, there is no
353f4109
PR
9special requirement. To list PCI resources on Windows 8 and higher versions,
10it is necessary to have architecture-native version (e.g. AMD64 version on
11AMD64 systems).
12
b8773677
PR
13For config space access there are different windows specific access methods:
14- win32-kldbg - Kernel Local Debugging Driver kldbgdrv.sys
15- win32-sysdbg - NT SysDbg interface
16- intel-conf1 - Direct hardware access via Intel configuration mechanism 1
17
18The default access method is win32-cfgmgr32 and by default it tries to use
19one of the above config access access method to provide as much as possible
20information to application. More details about particular access method and
21caveats are described in the pcilib(8) manual page.
22
7dbb846c 23The default access method for config space is win32-kldbg. It uses Microsoft's
7bcd087d
PR
24Kernel Local Debugging Driver kldbgdrv.sys. This driver is not part of the
25Windows system but is part of the Microsoft WinDbg tool. It is required to
26have kldbgdrv.sys driver installed in the system32 directory or to have
27windbg.exe or kd.exe binary in PATH. kldbgdrv.sys driver has some restrictions.
28Process needs to have Debug privilege and Windows system has to be booted with
29Debugging option. Debugging option can be enabled by calling (takes effect
30after next boot): bcdedit /debug on
31
32Download links for WinDbg 6.12.2.633 standalone installer from Microsoft:
33https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi
34https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi
35
b8773677
PR
36To access config space via intel-conf1 access method on NT-based systems via
37NT ProcessUserModeIOPL system call, it is required to have SeTcbPrivilege
b8fbb6f0
PR
38(Act as part of the operating system privilege), which can be enabled in User
39Accounts settings (take effect after next login). By default this privilege is
40not enabled for any non-system user. Or alternatively it is required to be in
41local Administrators group and on Windows 2000 SP4 or higher systems to have
42SeImpersonatePrivilege (Impersonate a client after authentication privilege)
43which is by default enabled for all local Administrators accounts. There is no
353f4109
PR
44special requirement for DOS-based systems. 64-bit systems do not have to allow
45users to access config space even with SeTcbPrivilege.
b5847329 46
63435b6e
PR
47To compile this port, run following command:
48
42e6a803 49 make CROSS_COMPILE=i586-mingw32msvc- HOST=i586-windows ZLIB=no IDSDIR=""
63435b6e 50
353f4109
PR
51To build 64-bit version, run:
52
53 make CROSS_COMPILE=x86_64-w64-mingw32- HOST=x86_64-windows ZLIB=no IDSDIR=""
54
63435b6e
PR
55Sometimes compilation may fail due to broken or missing getopt implementation.
56In this case try to compile with additional make option: COMPAT_GETOPT=yes
57
b8773677
PR
58Building of shared DLL library libpci3.dll is supported too but needs to be
59manually enabled by make option: SHARED=yes
60
61This DLL library libpci3.dll has versioned symbols with stable ordinal numbers
62which provides backward and forward compatibility. Every symbol in DLL library
63has '@LIBPCI_3.<version>' suffix to achieve it. For linking application to
64libpci3.dll it is possible to generate import library from libpci3.def file.
65Such import library will provide import symbol names without versioned suffix
66as an alias for the latest symbol version, which matches function name in pci.h
67header file. The alias is resolved by the linker at linking time, so the final
68application binary would always reference only versioned symbol. DLL library
69libpci3.dll does not provide unversioned symbols, so for using GetProcAddress()
70or dlsym() it is needed to specify full versioned symbol name.