aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPali Rohár <pali@kernel.org>2024-02-24 23:57:35 +0100
committerMartin Mares <mj@ucw.cz>2024-02-25 00:10:06 +0100
commitb8773677b7512f695f8e5a8139e0e145f8cc4b41 (patch)
treebdabddd1ead32246bab4bd37d64eb97820a21f73
parent45152bc34c0e1aeed6a8e83a4b25b9c943e3a3e0 (diff)
downloadpciutils-b8773677b7512f695f8e5a8139e0e145f8cc4b41.tar.gz
README: Update information about Windows support
-rw-r--r--README.Windows35
1 files changed, 27 insertions, 8 deletions
diff --git a/README.Windows b/README.Windows
index 7a5ccab..991b182 100644
--- a/README.Windows
+++ b/README.Windows
@@ -4,12 +4,24 @@ 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 with basic information, there is no
+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).
-To access config space on NT-based systems, it is required to have SeTcbPrivilege
+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
@@ -30,9 +42,16 @@ To build 64-bit version, run:
Sometimes compilation may fail due to broken or missing getopt implementation.
In this case try to compile with additional make option: COMPAT_GETOPT=yes
-================================================================================
-BEWARE: The current implementation pokes I/O ports to access the PCI devices
-directly. This leads to several problems: some devices are invisible, extended
-PCIe configuration space is not available, and there are many potential race
-conditions. Instead, libpci should use the proper Windows drivers.
-================================================================================
+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.