WinCE设置USB模式立即生效的办法

博客主要围绕WinCE系统,介绍了设置USB模式生效的办法,为信息技术领域中系统设置相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <usbfnioctl.h>  
#define   PSZ_REG_SERIAL_CLASS_CLIENT_DRIVER            _T("Serial_Class")
#define   PSZ_REG_MASS_STORAGE_CLASS_CLIENT_DRIVER      _T("Mass_Storage_Class")  
/**************************************************************************
 * function : get USB mode : activesync or mass storage
 * parameters   :  N/A
 * returns : TRUE : mass storage , FALSE :   activesync
 **************************************************************************/
BOOL   GetUSBMode()
{
 BOOL bRet = FALSE;
 HANDLE hHandle  =   CreateFile(L"UFN1:",FILE_WRITE_ATTRIBUTES|GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
 if(hHandle   != INVALID_HANDLE_VALUE)
 {
  DWORD   dwBytes=0;
  UFN_CLIENT_INFO   ufnCInfo;
  DeviceIoControl(hHandle, IOCTL_UFN_GET_CURRENT_CLIENT,   NULL, 0, &ufnCInfo, sizeof(UFN_CLIENT_INFO), &dwBytes,   0);
  CloseHandle(hHandle);  
  if(_tcsncmp(ufnCInfo.szName, PSZ_REG_SERIAL_CLASS_CLIENT_DRIVER,   _tcslen(PSZ_REG_SERIAL_CLASS_CLIENT_DRIVER)))
  {
   bRet   = TRUE;
  }
 }
 return FALSE;
}  
/**************************************************************************
 *   function : set USB mode : activesync or mass storage
 * parameters   :   TRUE : mass storage , FALSE : activesync
 * returns :   success : TRUE , failed :   FALSE
 **************************************************************************/
BOOL   SetUSBMode(BOOL bIsUsbMode)
{
 BOOL bRet = FALSE;
 HANDLE   hHandle  =   CreateFile(L"UFN1:",FILE_WRITE_ATTRIBUTES|GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
 if(hHandle   != INVALID_HANDLE_VALUE)
 {
  UFN_CLIENT_NAME   ufnClientName;
  if(bIsUsbMode)
  {
   _tcsncpy(ufnClientName.szName,PSZ_REG_MASS_STORAGE_CLASS_CLIENT_DRIVER,_tcslen(PSZ_REG_MASS_STORAGE_CLASS_CLIENT_DRIVER));
   ufnClientName.szName[_tcslen(PSZ_REG_MASS_STORAGE_CLASS_CLIENT_DRIVER)]   =   L'\0';
  }
  else
  {
   _tcsncpy(ufnClientName.szName,PSZ_REG_SERIAL_CLASS_CLIENT_DRIVER,_tcslen(PSZ_REG_SERIAL_CLASS_CLIENT_DRIVER));
   ufnClientName.szName[_tcslen(PSZ_REG_SERIAL_CLASS_CLIENT_DRIVER)]   = L'\0';
  }  
  DWORD dwBytes;
  bRet = DeviceIoControl(hHandle,   IOCTL_UFN_CHANGE_CURRENT_CLIENT, ufnClientName.szName,sizeof(UFN_CLIENT_NAME),   NULL, 0,   &dwBytes,0);
  CloseHandle(hHandle);
  
  return   bRet;
 }
 return bRet;
}
要使重启后继续有效还需要修改以下注册表:
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
"DefaultClientDriver"="Serial_Class"
;改为Mass_Storage_Class为存储
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值