summaryrefslogtreecommitdiffstats
path: root/README.Windows
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 18:30:56 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 18:30:56 +0000
commitd3114e0edc60508fc1e44e6cd2733fb2a97cdaca (patch)
tree82d66db664dea6ee75010455b98b04f47fcc4a90 /README.Windows
parentInitial commit. (diff)
downloadpciutils-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.Windows57
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.