C++ 弹出U盘
来源:互联网 发布:js设置元素display为'' 编辑:程序博客网 时间:2024/05/17 08:59
调研USB弹出,记录结果:
bool CUSBControl::RemoveUSB(CString csDisk){HANDLE hDevice; // handle to the drive to be examined BOOL bResult; // results flag DWORD junk; // discard results DWORD dwError; CString csVolume;int nPos = csDisk.Find('\\');//csDisk like "H:\"if ( -1 != nPos ){csDisk = csDisk.Left(nPos);}csVolume.Format(L"\\\\.\\%s", csDisk);// Open the volume hDevice = CreateFile(csVolume, // drive to open GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, // share mode NULL, // default security attributes OPEN_EXISTING, // disposition 0, // file attributes NULL); // don't copy any file's attributes if (hDevice == INVALID_HANDLE_VALUE) // can't open the drive { dwError = GetLastError(); return FALSE; } //Dismount the volume bResult = DeviceIoControl( hDevice, // handle to volume IOCTL_STORAGE_EJECT_MEDIA, //eject USBNULL, // lpInBuffer 0, // nInBufferSize NULL, // lpOutBuffer 0, // nOutBufferSize &junk, // discard count of bytes returned (LPOVERLAPPED) NULL); // synchronous I/O if (!bResult) // IOCTL failed { dwError = GetLastError(); } // Close the volume handle bResult = CloseHandle(hDevice); if (!bResult) { dwError = GetLastError(); } return FALSE;}
csDisk怎么来的呢?
BOOL CUSBControl::OnDeviceChange( UINT nEventType, DWORD dwData) { DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*) dwData;PDEV_BROADCAST_VOLUME pDevVolume = NULL;switch (nEventType) { case DBT_DEVICEARRIVAL:pDevVolume = (PDEV_BROADCAST_VOLUME)dbd; switch(pDevVolume->dbcv_flags) { case 0: { if(DBT_DEVICEARRIVAL == nEventType) { CString strDisk; strDisk.Format(L"%c:\\",FirstDriveFromMask(pDevVolume->dbcv_unitmask)); RemoveUSB(strDisk); } } break; } break;} return TRUE;}
char CUSBControl::FirstDriveFromMask( ULONG unitmask ){char i;for (i = 0; i < 26; ++i){if (unitmask & 0x1)break;unitmask = unitmask >> 1;}return( i + 'A' );}
- 弹出U盘代码
- C++ 弹出U盘
- VC++弹出U盘
- 禁止U盘自动弹出
- Linux下弹出U盘的代码
- Linux下弹出U盘的代码
- U盘无法弹出的有效解决方法
- ubuntu的弹出U盘/移动硬盘
- Windows API实现弹出U盘
- 弹出停止U盘"安全删除硬件"的命令
- U盘或移动硬盘无法弹出的解决方法
- 小知识 热插拔U盘为何要“弹出"??????????
- 关于U盘无法弹出的几种解决方法
- 如何禁止启用U盘的自动弹出功能
- 【安全弹出U盘】无法停止“通用卷”…
- C++实现Linux下弹出U盘的方法
- 禁止U盘自动弹出/禁止u盘自动挂载
- 最近写一个C#关于U盘的操作,在弹出U盘是遇到了些问题,C#调WINdoWs底层的东西太麻烦了,看样子要看看VC或C了
- archlinux 连接网络,及使用ssh登录。
- Android飞行模式的打开与关闭
- XML跟Json的一些对比
- MFC--非模式对话框程序(mfc框架)
- hdu 1879 裸最小生成树
- C++ 弹出U盘
- DOS中常用的网络命令
- NodeJs 安装 Express框架报错的解决办法
- 显示各种类型窗口
- TCP/IP 协议简单分析
- 无题
- AlarmManager 全局定时器
- 思维导图软件与团队协作
- 关于 世界各国 省份 城市 三级数据库表脚本文件