将即插即用设备映射到 PCI 插槽 ID,C#

     2023-03-27     54

关键词:

【中文标题】将即插即用设备映射到 PCI 插槽 ID,C#【英文标题】:Mapping Plug N Play Devices to PCI Slot IDs, C# 【发布时间】:2017-06-09 18:18:42 【问题描述】:

我有一定数量的外部设备,我们称它们为事物。 每个事物都通过插入 PCI 插槽的 PnP 卡与计算机连接。 每张卡都有 4 个东西的端口。 我需要为每个持续存在且在重新启动之间保持一致的事物获取一个 UID。 请注意,Things 没有我可以访问的内置 UID。

我解决这个问题的想法是为卡上的每个端口获取一个 UID。在我看来,我只需要弄清楚每张卡插入哪个 PCI 插槽。这不会在重新启动时改变,而且端口肯定会以相同的顺序排列......所以我基本上可以用 UID 标记每个端口并知道每个事物与哪个 UID 相关联。

我进行了相当多的搜索以找出最有用的 C# 对象。我找到的最接近的是来自System.Management 库的ManagementObjectSearcher 对象。这是我编写的一些简单代码,看看这是否能得到我想要的:

static void Main(string[] args)

    IDsearch();
    Console.ReadLine();


static void IDsearch()

    ManagementObjectSearcher searcher =
        new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity");

    foreach (ManagementObject queryObj in searcher.Get())
    
        Console.WriteLine("DeviceID: 0", queryObj["DeviceID"]);
        Console.WriteLine("Description: 0", queryObj["Description"]);
    

这会为我计算机上的每个 PnP 设备生成如下输出:

DeviceID: ACPI\GENUINEINTEL_-_INTEL64_FAMILY_6_MODEL_60_-_INTEL(R)_CORE(TM)_I7-4790_CPU_@_3.60GHZ\_1
Description: Intel Processor

DeviceID: USB\VID_0CF3&PID_3004\ALASKA_DAY_2006
Description: Dell Wireless 1535C Bluetooth Device

如果我还可以获得 PCI 插槽号,这将符合我的要求。

我也遇到了Win32_SystemSlot 类,但这似乎并没有给我描述实际插入插槽的内容!所以在这一点上,我可以得到没有 PCI 插槽的描述......和没有描述的 PCI 插槽。我只是无法将它们映射在一起,这正是我所需要的。我一定是忽略了什么或者没有问正确的问题,因为这让我觉得很常见。

感谢您的帮助。

【问题讨论】:

嗨 Keith,我不知道你的问题的答案,但在我看来,你需要找到一种方法来获取设备的 ID 而不是端口。这些东西应该有一些东西可以识别它们……看看这个……msdn.microsoft.com/en-us/windows/hardware/drivers/install/… @GreatJobBob。事实上,事物确实有描述。它们在不同的事物之间并不是唯一的。我正在尝试识别和区分同时连接的多个事物。换句话说,虽然我有一个 ID,但要获得一个 UID,我需要映射到卡和端口。 你的东西连接的卡应该有一个 UID,所以你不能扫描卡 UID 来知道你的卡安装到哪个 PCI 插槽? 你解决过这个问题吗?如果可能的话,我还需要报告设备以及它们所在的 PCI 插槽。 不,我从来没有解决过这个问题。最终为每个“事物”使用单独的计算机而不是单个主板并使用消息队列。无论如何,这实际上对我的特殊需求更有意义。但不,即使经过大量研究,我也从未真正找到答案。 【参考方案1】:

这听起来非常脆弱,如果机器被移动并且设备被插入不同的端口会怎样。是个人项目或您尝试分发的东西。如果是后者,你应该找到另一种方法。是你自己创造的“事物”吗?如果是这样,您需要包括让每个人都拥有唯一标识符的能力。如果不是,您应该联系制造商并询问。试图通过端口识别它可能会让你在路上很头疼

【讨论】:

您的观点是有道理的,但它们对我的特定问题并没有真正的帮助。事实上,我同意你的看法......但我不能只是重新制造内置 UID 的东西。请注意,至少我见过的其他设备(例如显卡)似乎没有特定于单元的 UID……只是特定于型号。 好的,Keith 这很公平,但是对于显卡,我们不需要跟踪在重新启动之间发送给每个显卡的内容。也许您可以提供有关您正在尝试做的事情的更多详细信息:) 这些东西是相机。我需要将每个相机的输出与它所源自的特定相机相关联。不过,我将问题抽象为事物,因为我不明白它为什么重要……只是试图使问题尽可能干净。我正在寻找的解决方案是 PnP 或 PCI 插槽级别......而不是设备级别的类型。 嗨,基思。您能在 Windows 设备管理器中看到摄像头吗?如果可以,请转到详细信息页面,看看是否可以看到端口信息。下拉列表中的详细信息页面上应该有很多信息。如果可以,那么至少您会知道这是可能的。如果 Windows 看不到它,那么输入可能会非常困难。【参考方案2】:

我认为您正在寻找 Win32_BusWin32_DeviceBus 类的组合。

Win32_Bus 表示运行 Windows 操作系统 (Microsoft Docs) 的计算机所看到的物理总线。总线类型可以是 PCI,总线号似乎是不同物理 PCI 总线的枚举。

Win32_DeviceBus 关联系统总线和使用该总线的逻辑设备。此类用于发现哪些设备在哪个总线上 (Microsoft Docs)。在我的平台上,与总线关联的设备始终是 Win32_PnPEntity

使用这些类,您应该能够从给定的Win32_PnPEntity 中找到物理总线属性。

【讨论】:

智能家居通用管理平台-即插即用机制的设计

   即插即用机制,对智能家居的推广,非常重要。没有她,老百姓估计不会使用。   好了,现在有了“智能冰箱”和它的驱动程序,SHM就可以使用它的SHDD来与冰箱交互了,并且是使用TCPIP协议通信。但... 查看详情

打包基于 JavaScript 的即插即用应用程序

】打包基于JavaScript的即插即用应用程序【英文标题】:PackagingJavaScriptbasedplugandplayapplication【发布时间】:2017-04-1223:09:36【问题描述】:我正在尝试构建一个即插即用的基于Web的应用程序,我应该能够与多个其他Web应用程序(使... 查看详情

深度学习中的即插即用模块pdf下载

《卷积神经网络中的即插即用模块》是首发于GiantPandaCV公众号的电子书教程,欢迎关注其微信公众号:链接:https://pan.baidu.com/s/1Tzrcs-6XmObawb19Q68iOw提取码:os3g部分目录:  查看详情

即插即用开源在线客服系统——ppmessage

PPMessage是一个开源的在线客服平台。PPMessage能够帮助你在第一时间与你的客户建立联系,开发人员可以非常容易的将PPMessage集成到你的网站或者iOS、Android的应用中。PPMessage的前端后端都是开源的,后端全部基于Python,简洁高效... 查看详情

type-c领夹式麦克风方案,即插即用,外围简单兼容性优秀

TYPE-C领夹式麦克风方案,即插即用,外围简单兼容性优秀的芯片-LDR6028结构示意图单接手机(由手机往外输出电压给板子工作)1、概述LDR6028SOP8是乐得瑞科技针对USBType-C标准中的Bridge设备而开发的USB-CDRP接口USBPD通... 查看详情

macos读写ntfs即插即用.

1.安装osxfusehttps://osxfuse.github.io/2.安装brewhttps://brew.sh/index_zh-cn.html3.安装ntfs-3gbrewinstallntfs-3g4.替换本地的mount_ntfs文件sudomv/sbin/mount_ntfs/sbin/mount_ntfs.oldsudoln-s/usr/local/sbin/mount_ntf 查看详情

分享一个即插即用的私藏缓动动画js小算法

二、即插即用的缓动小算法原理如下:假设要从数值A变化到数值B,如果是线性运动,则每次移动距离是一样;如果是缓动,每次移动距离不一样。那如何才能不一样呢?很简单,按比例移动就可以。例如:每次移动剩余距离的... 查看详情

如何为高度解耦、即插即用的复杂组件构建 Redux?

】如何为高度解耦、即插即用的复杂组件构建Redux?【英文标题】:HowtostructureReduxforahighlyde-coupled,plug-n-playcomplexcomponent?【发布时间】:2018-04-1012:49:16【问题描述】:我对Redux很陌生,想在我的应用程序中使用它,但我在Redux部分... 查看详情

第一个不支持即插即用的nt式helloworld驱动

1.安装好驱动包2.编写源代码Sources文件和makefile文件##源代码/*********************************文件名称:Driver.h*作者:左飞*完成日期:2016-9-4*********************************/#pragmaonce//保证头文件只被编译一次#ifdef__cplusplusextern"C"//兼容C代码{ 查看详情

linuxtogo:制作随身携带、即插即用的linux系统

...USB驱动器中启动并运行?下面我将教大家制作随身携带、即插即用的Linux操作系统。(把当前系统移植到移动硬盘上)为什么需要这个功能呢?硬件:软件:Linux发行版自带的工具如gpartedgrubcp制作Linux启动盘的制作分为以下几个... 查看详情

p2p网络核心技术:upnp和ssdp协议

参考技术AUPnP,UniversalPlugandPlay,中文是“通用即插即用”。在理解UPnP之前,我们先了解一下传统的PnP技术,因为UPnP是对于传统PnP(即插即用)概念的扩展。传统的PnP“即插即用”是指PC电脑在添加硬件设备时可以自动处理的一... 查看详情

如何让即插即用的 WPF 应用程序创建 SQL 数据库? [关闭]

】如何让即插即用的WPF应用程序创建SQL数据库?[关闭]【英文标题】:HowtomakeaplugandplayWPFappcreateaSQLdatabase?[closed]【发布时间】:2020-11-2212:22:15【问题描述】:我目前正在学习WPF,目的是为朋友制作一个简单的应用程序。此应用程... 查看详情

即插即用安全验证模块-使用pam模块(代码片段)

可插入式验证模块(PAM)。可插入式验证木块。应用程序调用libpam函数来验证和授权用户。libpam基于应用程序的PAM配置文件做检测。可以通过libc在NSS中检查。共享的,动态可配置代码。文档:/usr/share/doc/pam-<version>/#man-kpam_... 查看详情

电脑开机显示cpuormemorychanged!!!pleaseentersetuptoconfigureyoursystem

...备的节电功能运行方式进行设置。  PnP/PCIConfigurations(即插即用/PCI参数设定):设定ISA的PnP即插即用界面及PCI界面的参数,此项功能仅在系统支持PnP/PCI时才有效。  PCHealthStatus(计算机健康状态):主要是显示系统自动检... 查看详情

yolov8-gradcam热力图可视化即插即用不需要对源码做任何修改!(代码片段)

...给大家带来yolov8-gradcam热力图可视化,这个可视化是即插即用,不需要对源码做任何修改喔!给您剩下的不少麻烦!代码链接:yolo-gradcam里面还有yolov5和v7的热力图可视化代码,也是即插即用,不需要对... 查看详情

cbam——即插即用的注意力模块(附代码)(代码片段)

论文:CBAM:ConvolutionalBlockAttentionModule代码: code目录前言1.什么是CBAM?(1)Channelattentionmodule(CAM)(2)Spatialattentionmodule(SAM)(3)CAM和SAM组合形式2.消融实验(1)Channela... 查看详情

常用的即插即用的注意力机制模块(secbam)(代码片段)

1、SENet1.1前言        SENet是最后一届ImageNet2017竞赛分类任务的冠军。SENet网络的创新点在于关注channel之间的关系,希望模型可以自动学习到不同channel特征的重要程度。为此,SENet提出了Squeeze-and-Excitation(SE)模块。   ... 查看详情

改进yolov5系列:10.最新hornet结合yolo应用首发!|eccv2022出品,多种搭配,即插即用|backbone主干递归门控卷积的高效高阶空间交互(代码片段)

YOLOAir:面向小白科研的YOLO检测项目-GitHub💡统一使用YOLOv5代码框架,结合不同模块来构建不同的YOLO目标检测模型。🌟本项目包含大量的改进方式,降低改进难度,改进点包含【Backbone特征主干】、【Neck特征融合】... 查看详情