通过 Windows API 检索 PCI 坐标(用户模式)

2024-01-05

有没有办法使用 Windows c/c++ API(例如 PnP Configuration Manager API)获取设备的 PCI 坐标(总线/插槽/功能号)?我已经知道如何在内核模式下执行此操作,我需要一个用户模式解决方案。我的目标系统是 Windows XP-32 位。


我最终找到了一个简单的解决方案(这只是深入研究 MSDN 的问题)。

这个最小的代码根据总线/插槽/功能查找设备的 PCI 坐标:

DWORD bus, addr, slot, func;
HDEVINFO h; // Obtained by SetupDiGetClassDevs
SP_DEVINFO_DATA d; // Filled by SetupDiGetDeviceInterfaceDetail

SetupDiGetDeviceRegistryProperty(h,&d,SPDRP_BUSNUMBER,NULL,&bus,sizeof(bus),NULL);
SetupDiGetDeviceRegistryProperty(h,&d,SPDRP_ADDRESS,NULL,&addr,sizeof(addr),NULL);
slot = (addr >> 16) & 0xFFFF;
func = addr & 0xFFFF;

注意:对于实际生产,必须通过先前调用 API 函数来获取输出缓冲区的大小,以便动态分配它,当然还必须添加错误检查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Windows API 检索 PCI 坐标(用户模式) 的相关文章

  • 如何检测Windows 8.1开始菜单?

    当我们在 Windows 8 1 上按下开始菜单时 它会以磁贴的形式显示所有新的开始菜单以及应用程序 该菜单显示在整个屏幕上 有没有办法检测这个菜单是否在 C 中打开 8 1 SDK 中是否有 winAPI 可以执行此操作 提前致谢 调用
  • 隐藏错误报告窗口

    我有以下问题 我的 ASP Net 应用程序接收简单控制台程序的 C 源代码 使用 cl exe 命令行 VC 编译器 对其进行编译 并使用 System Diagnostics Process 运行它 ASP Net应用程序运行在PC上
  • Win32 控制台禁用系统菜单按钮

    我想禁用 灰色控制台窗口上的系统菜单按钮 特别是最小化按钮 我已经尝试过上面提到的功能另一个线程 https stackoverflow com questions 15834818 c prevent the console window
  • Windows 上的本机窄字符串编码是什么?

    Subversion API 有一个功能数量 http subversion apache org docs api latest svn utf 8h html用于从 本机编码 字符串转换为以 UTF 8 编码的字符串 我的问题是 Win
  • winapi 函数的函数指针 (stdcall/cdecl)

    请有人给我一些为 MS winapi 函数创建函数指针的提示吗 我试图为 DefWindowProc DefWindowProcA DefWindowProcW 创建一个指针 但出现此错误 LRESULT dwp HWND UINT WPA
  • 链接到大地址感知 DLL

    假设我有一个使用 LARGEADDRESSAWARE 链接器标志集构建的 DLL 现在我有一个动态链接到该 DLL 的应用程序 这是否会使我的应用程序具有大型地址意识 如果不是 那么为任何 DLL 设置此标志是否有意义 讨论here htt
  • Windows.Automation 中的旧版 IAccessible

    如何使用C 获取AutomationElement的LegacyIAccessible State和其他LegacyIAccessibles 就像工具中的 Inspect exe 一样 The LegacyIAccessible是新的 并且
  • 向 Windows 服务发送 Windows 消息

    有没有任何工具可以将 WM ENDSESSION 等 Windows 消息发送 模仿 到 Windows 服务 OR 如何使用 C 向进程发送 Windows 消息 我只懂C 编辑 目的 基本上我必须调试 Windows 服务来修复仅在系统
  • 使用API​​隐藏程序标题栏

    它可以使用 c 和 windows api 删除窗口控制台标题栏 如果是的话如何 请 这个简单的应用程序隐藏并显示其所在控制台的标题栏 它会立即将控制台标题更改为 guid 以查找窗口句柄 然后 它使用 ToggleTitleBar 使用找
  • 如何在没有清单的情况下启用视觉样式

    根据docs http msdn microsoft com en us library bb773187 aspx 如果您希望应用程序使用 ComCtl32 dll 版本 6 则必须添加应用程序清单或编译器指令指定应使用版本 6 如果可用
  • 什么是特权指令?

    我添加了一些可以干净编译的代码 并且刚刚收到此 Windows 错误 MonTel Administrator 2 12 7 MtAdmin exe Application Error The exception Privileged in
  • 如何捕获正在播放的音频?

    有谁知道如何以编程方式捕获正在播放的声音 即来自声卡的所有声音 而不是麦克风等输入设备 假设您正在谈论 Windows 则基本上可以通过三种方法来实现此目的 首先是打开音频设备的主输出作为录音源 这只有在驱动程序支持时才可能实现 尽管现在大
  • C# - 如何将 IntPtr 缓冲区数据保存到文件(最快的方法)?

    我使用此代码将非托管代码中的 IntPtr 缓冲区中的字节保存到文件中 这是一个简单的回调函数 private void callback IntPtr buffer int length byte bytes new byte lengt
  • 具有自定义镶边的 WPF 窗口在右侧和底部有不需要的轮廓

    我使用 Microsoft Windows Shell dll 创建了带有自定义镶边的 WPF 窗口 这是代码
  • C# 如何使用 CallNtPowerInformation 和 Interop 来获取 SYSTEM_POWER_INFORMATION

    我正在尝试编写一个小程序 该程序作为服务运行并监视用户是否处于活动状态 如果用户空闲 没有鼠标 键盘 一个小时 则某些进程将被终止 如果用户使用 user32 dll 中的 LASTINPUTINFO 运行它 它就可以工作 但它不能作为服务
  • 如何让 Win32 使用 Windows XP 样式字体

    我正在使用纯 C 和 WinAPI 编写 Win32 应用程序 不允许使用 MFC 或 C 为了让控件使用适当的样式进行绘制 我使用了清单 如相应的 MSDN 文章中所述 一切都很好 当我更改系统样式时 我的应用程序也会更改样式 但使用的字
  • 如何在Delphi中显示Vista风格的气球提示?

    在输入验证时 我使用气球提示而不是消息框 我的问题是 在 Vista 上 它们具有带圆角的旧 XP 样式 而不是较新的矩形外观 我尝试使用 CreateWindowEx 创建它们并且tooltips class32或使用 SendMessa
  • win32上的64位Anaconda使用32位还是64位?

    我猜答案是 32 位 但我有点困惑为什么我什至可以在 win32 中安装 Anaconda 64 我曾经在 Anaconda 64 位上工作 但我刚刚意识到我的系统是 win32 这有时会产生一些异常 例如 请参阅我为 scipy 打开的这
  • 批处理文件删除目录中除指定列表之外的所有文件夹

    我正在寻找一个批处理文件 该文件将进入 C Documents and Settings 并删除除我想保留的几个文件夹之外的所有文件夹 这是一个破解方法 D 如果您在folders txt 中有一个文件夹路径列表 如下所示 C Docume
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr

随机推荐

  • jQuery:检查鼠标是否位于动画上方?

    这几乎就是我正在做的事情 https jsfiddle net atg5m6ym 2625 https jsfiddle net atg5m6ym 2625 我使用 jQuery 为 div 制作动画以向左移动 然后当我将鼠标悬停在 div
  • Jackson - 在运行时解析相同密钥下的不同模型

    我有来自服务器的特定 json 响应 其中在一个密钥下 内容将是不同的模型 而且一次只有一个模型数据会出现在该密钥下 在将响应解析为 POJO 时 如何根据同一模型上 contentType 的其他字段在运行时指定对象类型 以下是为了更好地
  • 使用不带动画功能的 matplotlib 进行动画处理

    有没有一种方法可以在 matplotlib 中对图形进行动画处理 而无需借助内置的动画函数 我发现它们使用起来非常尴尬 并且觉得只绘制一个点 擦除图表 然后绘制下一个点会简单得多 我设想的是这样的事情 def f do stuff here
  • r Markdown 的 Yaml 标头中的单引号和双引号有什么区别?

    我在 RStudio 中使用 knit 编译的 r Markdown 文件中遇到错误 我不太确定这个 错误 应该指向哪里 这似乎并不是一个 R 错误 如果我使用以下 YAML 标头内容创建 R markdown 文档 我可以很好地编织该文件
  • winsock中的异步地址解析?

    查看winsock中的异步地址解析 似乎唯一的两个选择是使用阻塞gethostbyname在单独的线程上 或使用WSAAsyncGetHostByName 出于某种原因 后者被设计为处理窗口消息 而不是重叠操作和完成端口 例程 有没有什么版
  • Python Mechanize 选择表单 FormNotFoundError

    我想选择带有机械化的形式 这是我的代码 br mechanize Browser self br open url br select form name login form 表格的代码
  • 在 C++ 中不打开文件检查文件大小?

    我正在尝试获取大文件 12gb 的文件大小 但我不想打开该文件来执行此操作 因为我认为这会消耗大量资源 有没有什么好的API可以做到这一点 我是在Windows环境下 你应该打电话GetFileSizeEx http msdn micros
  • 如何使用numpy生成分段间隔上的随机数

    我正在 python 中使用 numpy 模块来生成随机数 当我需要生成连续区间的随机数如 a b 时 我会使用 b a np random rand 1 a 但现在我需要生成区间 a b 和 c d 内的均匀随机数 我该怎么办 我想生成一
  • ConnectNamedPipe 和 asio 重叠的 ptr

    我将管道服务器命名为使用 boost asio 编写的 服务器创建命名管道并调用 ConnectNamedPipe 将 asio 重叠 ptr 传递给它 问题是传递给 asiooverlaped 的完成处理程序永远不会被调用 即在客户端调用
  • 如何在android studio中启用版本控制窗口

    对于我的某些分支 我无法获得版本控制窗口 例如 如果我进入分支develop 然后窗口显示 如果我进入master它已经消失了 我无能为力把它找回来 我试图通过从开发到掌握来欺骗它 但一旦我掌握了 它又消失了 该问题相对较新 7 天 过去不
  • 为什么 Scala 案例类字段不反映为公共字段?

    我一直将案例类的构造函数参数理解为定义公共值 但是 当我反映这些字段时 isPublic 方法出现错误 有什么想法吗 scala gt class Test val name String val num Int defined class
  • 自定义 Ansible 回调未接收 group_vars/host_vars

    我正在编写一个自定义的 ansible 回调 class CallbackModule CallbackBase CALLBACK VERSION 2 0 CALLBACK TYPE aggregate CALLBACK NAME my c
  • 如何在mayavi(imshow)中绘制彩色图像

    是否可以使用mayavi绘制具有3个颜色通道的图像 根据 mayavi 的文档 mayavi mlab imshow只能处理形状为 n x m 的图像 Method 我必须使用 Mayavi 的自定义色彩图 请参阅http docs ent
  • 用于网站和 Api 的 Ninject - 序列不包含元素

    我有一个带有 Web Api 项目和 MVC 3 项目的 VS2010 解决方案 Web APi 和 MVC 项目都有自己的 App Start 和 NinjectWebCommon 并在其中声明了自己的绑定 当尝试使用 Api 时 我总是
  • PHP 中的 OOP:来自变量的类函数?

    是否可以像这样从类中调用函数 class new class function name do the thing req class gt function name 类似的解决方案 这似乎不起作用 是的 这是可能的 这就是众所周知的变量
  • 在单个 ASP.NET Core WebAPI 服务中托管多个产品 API

    我正在设计一个基于 ASP NET Core 的 Web API 它需要支持我的产品的多个变体 比方说基于许可证或安装的品种 我没有为每种类型的产品提供多种服务 而是考虑使用一个服务来容纳 托管多个端点或 URL 我将在安装时在 appse
  • 如何在c中读取图像的像素?

    假设我们的位图图像具有高度 M 和宽度 N 我们总是假设 在本实验中 宽度 N 是 4 的倍数 这简化了 文件中的字节布局 对于该图像 像素数组存储 正好 3 x N x M 字节 如下所示 每组 3 个字节代表一个像素 其中字节存储 按顺
  • 如何在 main 中设置 Nimbus 外观

    我刚刚学习Java 仍然无法解决我遇到的这个小问题 我的弹出日历使用 Nimbus 外观和感觉 但我有使用 Java 外观和感觉的面板和容器 Jtable 我试图使每个 GUI 屏幕 窗口都使用 Nimbus 外观和感觉 Merky 建议将
  • 从 numpy 数组到 DICOM

    我的代码读取 DICOM 文件 将像素信息放入 numpy 数组 然后修改 numpy 数组 它使用列表是因为我试图同时操作多个 DICOM 文件 我还没有找到任何关于如何获取修改后的 numpy 数组并再次使其成为 DICOM 文件的信息
  • 通过 Windows API 检索 PCI 坐标(用户模式)

    有没有办法使用 Windows c c API 例如 PnP Configuration Manager API 获取设备的 PCI 坐标 总线 插槽 功能号 我已经知道如何在内核模式下执行此操作 我需要一个用户模式解决方案 我的目标系统是