Get USB Infomation

namespace ConsoleApplication1
{
  using System;
  using System.Collections.Generic;
  using System.Management; // need to add System.Management to your project references.

  class Program
  {
    static void Main(string[] args)
    {
      var usbDevices = GetUSBDevices();

      foreach (var usbDevice in usbDevices)
      {
        Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
            usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。
winusb.h是Windows Driver Kit中的头文件,定义了WinUSB API,用于与USB设备进行通信。 WinUSB是Microsoft推出的一种通用USB驱动程序,它不需要特定的硬件驱动程序,可以直接通过USB接口与设备通信。WinUSB支持批量传输、中断传输和控制传输等多种数据传输方式,可以满足不同USB设备的通信需求。 winusb.h头文件中包含了WinUSB API的函数原型、结构体定义和常量定义等内容,可以在C/C++程序中直接使用。常用的函数包括: - WinUsb_Initialize:初始化WinUSB,打开设备并获得WinUSB接口句柄。 - WinUsb_Free:释放WinUSB接口句柄。 - WinUsb_ReadPipe:从设备读取数据。 - WinUsb_WritePipe:向设备写入数据。 - WinUsb_ControlTransfer:发送控制传输命令。 - WinUsb_QueryInterfaceSettings:查询设备接口设置。 使用WinUSB API时,需要先调用SetupAPI中的函数获取设备接口信息,然后使用WinUSB API与设备进行通信。需要注意的是,使用WinUSB API需要管理员权限。 下面是使用WinUSB API读取USB设备数据的一个简单示例: ```c #include <Windows.h> #include <Winusb.h> #define VID 0x1234 #define PID 0x5678 int main() { GUID guid; HDEVINFO deviceInfoSet; SP_DEVICE_INTERFACE_DATA deviceInterfaceData; PSP_DEVICE_INTERFACE_DETAIL_DATA deviceInterfaceDetailData; HANDLE deviceHandle; WINUSB_INTERFACE_HANDLE winusbHandle; UCHAR buffer[1024]; DWORD bytesRead; BOOL result; // 初始化GUID result = WinUsb_Initialize(VID, PID, &guid); if (!result) { printf("Failed to initialize GUID.\n"); return 1; } // 获取设备信息列表 deviceInfoSet = SetupDiGetClassDevs(&guid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); if (deviceInfoSet == INVALID_HANDLE_VALUE) { printf("Failed to get device information set.\n"); return 1; } // 获取设备接口信息 deviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA); result = SetupDiEnumDeviceInterfaces(deviceInfoSet, NULL, &guid, 0, &deviceInterfaceData); if (!result) { printf("Failed to enumerate device interfaces.\n"); return 1; } // 获取设备接口的详细信息 DWORD size; result = SetupDiGetDeviceInterfaceDetail(deviceInfoSet, &deviceInterfaceData, NULL, 0, &size, NULL); if (!result && GetLastError() != ERROR_INSUFFICIENT_BUFFER) { printf("Failed to get device interface detail size.\n"); return 1; } deviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(size); deviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); result = SetupDiGetDeviceInterfaceDetail(deviceInfoSet, &deviceInterfaceData, deviceInterfaceDetailData, size, NULL, NULL); if (!result) { printf("Failed to get device interface detail.\n"); return 1; } // 打开设备 deviceHandle = CreateFile(deviceInterfaceDetailData->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (deviceHandle == INVALID_HANDLE_VALUE) { printf("Failed to open device.\n"); return 1; } // 初始化WinUSB result = WinUsb_Initialize(deviceHandle, &winusbHandle); if (!result) { printf("Failed to initialize WinUSB.\n"); CloseHandle(deviceHandle); return 1; } // 读取数据 result = WinUsb_ReadPipe(winusbHandle, 0x81, buffer, sizeof(buffer), &bytesRead, NULL); if (!result) { printf("Failed to read pipe.\n"); WinUsb_Free(winusbHandle); CloseHandle(deviceHandle); return 1; } // 关闭设备 WinUsb_Free(winusbHandle); CloseHandle(deviceHandle); return 0; } ``` 这个示例代码中,使用了Winusb.h头文件中的函数和结构体,通过SetupAPI获取了设备接口信息,然后使用WinUSB API与USB设备进行通信,最终读取了USB设备的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值