diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:30:56 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 18:30:56 +0000 |
commit | d3114e0edc60508fc1e44e6cd2733fb2a97cdaca (patch) | |
tree | 82d66db664dea6ee75010455b98b04f47fcc4a90 /README.Windows | |
parent | Initial commit. (diff) | |
download | pciutils-d3114e0edc60508fc1e44e6cd2733fb2a97cdaca.tar.xz pciutils-d3114e0edc60508fc1e44e6cd2733fb2a97cdaca.zip |
Adding upstream version 1:3.11.1.upstream/1%3.11.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | README.Windows | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/README.Windows b/README.Windows new file mode 100644 index 0000000..991b182 --- /dev/null +++ b/README.Windows @@ -0,0 +1,57 @@ +Since 2.1.99-test5, pciutils should also be compilable on Windows. Thanks +to Alexander Stock for contributing the port. + +Updated after version 2.2.6 to compile again, and with MinGW, even (only?) +cross-compiling. (Hopefully it works with MSVC too.) + +For simple listing PCI devices in system via win32-cfgmgr32 access method +which provides only basic information and emulated config space, there is no +special requirement. To list PCI resources on Windows 8 and higher versions, +it is necessary to have architecture-native version (e.g. AMD64 version on +AMD64 systems). + +For config space access there are different windows specific access methods: +- win32-kldbg - Kernel Local Debugging Driver kldbgdrv.sys +- win32-sysdbg - NT SysDbg interface +- intel-conf1 - Direct hardware access via Intel configuration mechanism 1 + +The default access method is win32-cfgmgr32 and by default it tries to use +one of the above config access access method to provide as much as possible +information to application. More details about particular access method and +caveats are described in the pcilib(8) manual page. + +To access config space via intel-conf1 access method on NT-based systems via +NT ProcessUserModeIOPL system call, it is required to have SeTcbPrivilege +(Act as part of the operating system privilege), which can be enabled in User +Accounts settings (take effect after next login). By default this privilege is +not enabled for any non-system user. Or alternatively it is required to be in +local Administrators group and on Windows 2000 SP4 or higher systems to have +SeImpersonatePrivilege (Impersonate a client after authentication privilege) +which is by default enabled for all local Administrators accounts. There is no +special requirement for DOS-based systems. 64-bit systems do not have to allow +users to access config space even with SeTcbPrivilege. + +To compile this port, run following command: + + make CROSS_COMPILE=i586-mingw32msvc- HOST=i586-windows ZLIB=no IDSDIR="" + +To build 64-bit version, run: + + make CROSS_COMPILE=x86_64-w64-mingw32- HOST=x86_64-windows ZLIB=no IDSDIR="" + +Sometimes compilation may fail due to broken or missing getopt implementation. +In this case try to compile with additional make option: COMPAT_GETOPT=yes + +Building of shared DLL library libpci3.dll is supported too but needs to be +manually enabled by make option: SHARED=yes + +This DLL library libpci3.dll has versioned symbols with stable ordinal numbers +which provides backward and forward compatibility. Every symbol in DLL library +has '@LIBPCI_3.<version>' suffix to achieve it. For linking application to +libpci3.dll it is possible to generate import library from libpci3.def file. +Such import library will provide import symbol names without versioned suffix +as an alias for the latest symbol version, which matches function name in pci.h +header file. The alias is resolved by the linker at linking time, so the final +application binary would always reference only versioned symbol. DLL library +libpci3.dll does not provide unversioned symbols, so for using GetProcAddress() +or dlsym() it is needed to specify full versioned symbol name. |