首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过C#弹出USB设备

问题:通过C#弹出USB设备

答案

在C#中,通过使用Windows API,可以弹出USB设备。具体实现方式因USB设备的类型和操作系统而异。通常情况下,在Windows操作系统下,可以使用CreateFileDeviceIoControl API函数来操作USB设备。

以下是一个简单的C#代码示例,用于弹出USB设备:

代码语言:csharp
复制

using System;

using System.IO;

using System.Runtime.InteropServices;

class Program

{

代码语言:txt
复制
[DllImport("kernel32.dll")]
代码语言:txt
复制
private static extern bool CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);
代码语言:txt
复制
[DllImport("kernel32.dll")]
代码语言:txt
复制
private static extern bool DeviceIoControl(IntPtr hDevice, uint dwIoControlCode, IntPtr lpInBuffer, uint nInBufferSize, IntPtr lpOutBuffer, uint nOutBufferSize, ref uint lpBytesReturned, IntPtr lpOverlapped);
代码语言:txt
复制
[Flags]
代码语言:txt
复制
private enum FileAccess : uint
代码语言:txt
复制
{
代码语言:txt
复制
    Read = 0x80000000,
代码语言:txt
复制
    Write = 0x40000000,
代码语言:txt
复制
    Append = 0x20000000,
代码语言:txt
复制
    ReadWrite = Read | Write,
代码语言:txt
复制
    WriteWrite = Write | Write
代码语言:txt
复制
}
代码语言:txt
复制
private enum FileShare : uint
代码语言:txt
复制
{
代码语言:txt
复制
    Read = 0x00000001,
代码语言:txt
复制
    Write = 0x00000002,
代码语言:txt
复制
    Delete = 0x00000004
代码语言:txt
复制
}
代码语言:txt
复制
private enum CreationDisposition : uint
代码语言:txt
复制
{
代码语言:txt
复制
    New = 0x00000000,
代码语言:txt
复制
    Open = 0x00000001,
代码语言:txt
复制
    OpenOrCreate = 0x00000002,
代码语言:txt
复制
    Create = 0x00000003
代码语言:txt
复制
}
代码语言:txt
复制
private enum FileAttributes : uint
代码语言:txt
复制
{
代码语言:txt
复制
    Hidden = 0x00000002,
代码语言:txt
复制
    System = 0x00000010,
代码语言:txt
复制
    Directory = 0x00000001
代码语言:txt
复制
}
代码语言:txt
复制
private enum IoControlCode : uint
代码语言:txt
复制
{
代码语言:txt
复制
    IOCTL_DISK_GET_DRIVE_GEOMETRY = 0x00000070,
代码语言:txt
复制
    IOCTL_DISK_GET_PARTITION_INFO = 0x0000000A,
代码语言:txt
复制
    IOCTL_DISK_SET_PARTITION_INFO = 0x0000000B,
代码语言:txt
复制
    IOCTL_DISK_DELETE_PARTITION = 0x00000009,
代码语言:txt
复制
    IOCTL_DISK_FORMAT_PARTITION = 0x0000000C,
代码语言:txt
复制
    IOCTL_DISK_GET_ATTRIBUTES = 0x00000019,
代码语言:txt
复制
    IOCTL_DISK_SET_ATTRIBUTES = 0x0000001A,
代码语言:txt
复制
    IOCTL_DISK_DELETE_FILE = 0x00000022,
代码语言:txt
复制
    IOCTL_DISK_FILE_SET_POSITION = 0x00000029,
代码语言:txt
复制
    IOCTL_DISK_FILE_GET_POSITION = 0x0000002A,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_VERIFY = 0x0000002B,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_READ_SECTORS = 0x0000002C,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_WRITE_SECTORS = 0x0000002E,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_ERASE_SECTOR = 0x0000002F,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_WRITE_BUFFER = 0x00000030,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_READ_BUFFER = 0x00000031,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_FLUSH = 0x00000032,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_RESET = 0x00000033,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_GET_CACHE_INFORMATION = 0x00000034,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_SET_CACHE_INFORMATION = 0x00000035,
代码语言:txt
复制
    IOCTL_DISK_CONTROL_GET_POSITION = 0x000
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# 获得设备usb信息

本文告诉大家如何获得设备usb来进行判断是否有哪些usb和找不到usb可能是什么。...需要在项目右击引用,点击程序集,搜索 System.Management 然后安装他 然后使用下面的代码就可以获得设备usb 请看代码 static List<(string DeviceID...} collection.Dispose(); return devices; } 如果需要判断是否存在某个 usb...,就通过 pid vid 判断,判断的方法是拿PNPDeviceID字符串比较 参见:c# 获取移动硬盘信息、监听移动设备弹出与插入事件 - Chris Cheung - 博客园 如果发现找不到 usb...,可能是在开机的时候进行找usb,一般需要开机之后很久才会把所有的设备添加,所以如果找不到,就看开机的时间,如果太短,那么可能是因为程序太快去查。

2K30

C# 获得设备usb信息

本文告诉大家如何获得设备usb来进行判断是否有哪些usb和找不到usb可能是什么。...需要在项目右击引用,点击程序集,搜索 System.Management 然后安装他 然后使用下面的代码就可以获得设备usb 请看代码 static List<(string DeviceID...} collection.Dispose(); return devices; } 如果需要判断是否存在某个 usb...,就通过 pid vid 判断,判断的方法是拿PNPDeviceID字符串比较 参见:c# 获取移动硬盘信息、监听移动设备弹出与插入事件 - Chris Cheung - 博客园 如果发现找不到 usb...,可能是在开机的时候进行找usb,一般需要开机之后很久才会把所有的设备添加,所以如果找不到,就看开机的时间,如果太短,那么可能是因为程序太快去查。

2K10

如何让 USB 设备不显示安全删除硬件弹出选项

如果此时插入的是一个无线网卡,也就是 USB 无线 wifi 设备,此时如果逗比点了弹出 802.11 设备那么就不能再使用无线上网了 如果我是一个硬件供应商,如何让我的设备不会显示弹出安全删除硬件弹出选项...从 Overview of the Removable Device Capability可以知道一个 USB 设备是需要声明自己支持 Removable 的才可以在右下角使用安全删除硬件弹出选项 The...,通过发送 IRP_MN_QUERY_CAPABILITIES 获取到设备的返回信息,就可以知道这个设备支不支持移除 The Plug and Play manager uses the removable...硬件回复的消息请看 DEVICE_CAPABILITIES (wdm.h) 在 PnP 询问USB设备,此时USB设备返回 DEVICE_CAPABILITIES 里面可以设置 Removable 项说明此设备支持移除...1; // 忽略不相关属性 } DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES; 对 Removable 属性的官方注释是如果设置为 True 那么将会显示弹出或移除设备

2.8K30

USB设备状态

USB设备插上主机时,主机就通过一系列的动作来对设备进行枚举配置(配置是属于枚举的一个态,态表示暂时的状态),这些态如下: 1、接入态(Attached):设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入...; 2、供电态(Powered):就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置); 3、缺省态(Default):USB在被配置之前,通过缺省地址...0与主机进行通信; 4、地址态(Address):经过了配置,USB设备被复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态; 5、配置态(Configured):通过各种标准的USB...请求命令来获取设备的各种信息,并对设备的某此信息进行改变或设置; 6、挂起态(Suspended):USB总线处于空闲状态的话,该设备就要自动进入挂起状态,在进入挂起状态后,总的电流功耗不超过280UA...是 是 __ __ __ __ __ __ 是 设备在至少3毫秒以内探测不到总线活动,自动进如挂起.设备功能不可用. 下图为设备状态转化图:

1.6K20

Linux USB 设备驱动模型

BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。...2.1 pipe 使用这些接口函数的主要目的是传输数据,传输数据的对象是 USB 设备里的某个 endpoint,这被称为 pipe: /* Create various pipes... */ #define

40340

电脑无法通过iphone usb上网_iphone通过usb连接电脑

今天说一说电脑无法通过iphone usb上网_iphone通过usb连接电脑,希望能够帮助大家进步!!!...有很多小伙伴反映自己的笔记本想通过iphone的个人热点上网,但选择"通过USB连接"后,电脑却没有任何反应。遇到这种情况我们具体该怎么解决呢?...iphone通过USB连接电脑无法上网解决方法 1、右键“我的电脑”,选择属性 2、选择“设备管理器” 3、查看“通用串行总线控制器”,看看有没有apple mobile device USB driver...4、查看“网络适配器”,看看有没有apple mobile device ethernet 3-1、若没有apple mobile device USB driver,右键便携设备里的apple...Common Files\Apple\Mobile Device Support\Drivers 3-4、安装完成 4-1、若没有apple mobile device ethernet,右键便携设备里的

7.8K30

Linux USB 设备基础理论

通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...(该总线的第几台设备) speed: 速率 bDeviceClass: 设备类型 idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请 idProduct: 该生产商生产的产品编号...# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct 设备类型bDeviceClass# 类代码 用法 描述 00h 设备描述符 Use...参考文献# USB设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice...By USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

29030

USB干扰无线蓝牙设备整改案例

环境 下图是系统工作框图,USB3.0外设通过USB线缆与电能连接,USB线缆会辐射出干扰,这个干扰被PC的无线设备接受后产生噪音。...下图是测试环境,近场探头放置在USB设备(硬盘)附近,近场探头采集到的干扰被前置放大后由频谱仪来对干扰进行分析。...下图是分析的结果,灰色曲线是没有USB设备连接时的情况,红色曲线是连接USB设备之后的情况,可以看到没有USB连接时噪声水平大约只有-118dB,而USB设备连接后在2.4GHz附近噪声水平达到了-100dB...下面对USB设备硬盘进行包铜箔处理,如下图所示,一共进行了4种程度的包铜处理,从case1到case4,包的越来越严实,如果缝隙大的话还是有干扰会漏出来。...为了进一步降低干扰,又对连接器进行了屏蔽,下图是屏蔽之后的结果,灰色曲线是没有USB设备连接的情况,噪声水平最低。

2.2K40

通过 USB 或网络控制安卓设备:无需 root 权限 | 开源日报 No.231

barry-ran/QtScrcpyhttps://github.com/barry-ran/QtScrcpy Stars: 15.6k License: Apache-2.0 QtScrcpy 是一款支持通过...USB 或网络显示和控制 Android 设备的实时显示控制软件,不需要 root 权限。...其主要功能和优势包括: 轻量化(仅显示设备屏幕) 高性能(30~60 fps) 高画质(1920×1080 或更高分辨率) 低延迟(35~70ms) 快速启动时间(约 1 秒展示第一帧) 无需在设备上安装任何内容...极速查询响应:单次查询响应时间在十微秒级别,并可通过内存加速进行优化。 多语言支持:提供多种主流编程语言下 xdb 查询客户端实现。...提供各种技术栈的备忘清单和速查表 可以通过提交 PR 来修复或提供更好的备忘清单 针对中文用户,方便技术资料查询和分享 stitionai/devikahttps://github.com/stitionai

15810

Android Audio支持Usb 音频设备

背景 最近遇到一些场景,Android 需要支持通话音量下从一些usb外设采集音频数据。对于Android,通话音量下,需要主动连接设备,否则会默认从手机麦克风采集。...接下来就得hook下了,通过frida hook,发现了出现UsbManager的调用,通过UsbManager是可以获取到当前连接的Usb设备,并且通过UsbInterface就可以知道是否是音频设备...接下来就需要知道如何被动感知到Usb 设备连接了,看到有这样的2个广播: UsbManager.ACTION_USB_DEVICE_ATTACHED UsbManager.ACTION_USB_DEVICE_DETACHED...利用注册这个广播就可以感知到usb设备变化了。...观察了下这种Usb设备的模式,一个Usb 接口插到手机上,另外一个蓝牙发送器和Usb 接口蓝牙连接,这样手机就不需要知道这个Usb设备是否是蓝牙设备了,本质上和普通的有线耳机应该是一样的。

1.7K20

USB总线-Linux内核USB3.0设备控制器复合设备之legacy方式分析(八)

USB gadget configfs和legacy相比只是实现复合设备的形式不同而已,设备的功能最终还是要通过function驱动实现。下面以音频复合设备为例,分析g_audio驱动的工作过程。...2.音频复合设备驱动 从前面的分析中可以看出,复合设备驱动围绕usb_composite_driver和usb_composite_dev两个数据结构展开,legacy方式的复合设备驱动也不例外。...) module_driver宏定义如下,最终还是通过module_init初始化,module_exit宏卸载。...USB gadget configfs根据名称查找USB设备控制器,而legacy方式只匹配第一个USB设备控制器,无法匹配指定的USB设备控制器。...若要使用音频设备,则只能通过g_audio驱动构造复合设备,若使用USB虚拟网卡,则只能通过g_ether驱动构造复合设备,若需要多个功能的USB设备,则需要重新构造复合设备,编码定义usb_composite_driver

3.7K40

Linux 上如何禁用 USB 存储设备

为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 USB 存储设备。 在本教程中,我们将讨论三种不同的方法来禁用 Linux 机器上的 USB 存储设备。...所有这三种方法都在 CentOS 6&7 机器上通过测试。那么让我们一一讨论这三种方法。...方法 2:删除 USB 驱动 这种方法要求我们将 USB 存储的驱动程序(usb_storage.ko)删掉或者移走,从而达到无法再访问 USB 存储设备的目的。...方法 3:将 USB 存储器纳入黑名单 我们也可以通过 /etc/modprobe.d/blacklist.conf 文件将 usb-storage 纳入黑名单。...usb-storage 就在就会被系统阻止加载,但这种方法有一个很大的缺点,即任何特权用户都可以通过执行以下命令来加载 usb-storage 模块, $ sudo modprobe usb-storage

9.7K10

【远程访问与设备重定向】上海道宁为您助您远程共享USB设备USB设备重定向到远程会话

USB over Network用于通过LAN或Internet与远程USB设备进行通信远程USB设备可供多个用户共享当您连接远程共享USB设备时它们会被识别为直接连接到本地计算机USB for Remote...Desktop是通过Microsoft RDP、Teradici PCoIP或Citrix ICA协议将USB设备重定向到远程会话的理想解决方案USB设备被模拟为直接插入远程侧开发商介绍FabulaTech...USB over Network介绍USB over Network允许使用通过本地网络或Internet共享的远程USB设备。...因此,它确实是远程访问USB设备的通用解决方案。即使是奇特的USB设备也可以通过网络或Internet访问。...可以通过 Active Directory 完成配置,允许预先设置所需的设置,甚至为指定用户或仅针对特定类型的 USB 设备禁用 USB 重定向。

4.5K20
领券