5755|14

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

Mass_Storage_Class和Serial_Class模式问题 [复制链接]

我写了个应用程序,通过写注册表来实现这两种模式的切换,应用程序的代码是:
[code]
const TCHAR szregRootKey[] = TEXT("Drivers\USB\FunctionDrivers");
const TCHAR szregDefaultClientDriver[] = TEXT("Mass_Storage_Class");

        long lResult = 0;       
        lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szregRootKey, 0, KEY_ALL_ACCESS, &hDrvKey);
        if(ERROR_SUCCESS == lResult)
        {       
                WRITE_REG_SZ(L"DefaultClientDriver",szregDefaultClientDriver);                       
        }
        RegCloseKey(hDrvKey);
        KernelIoControl (IOCTL_HAL_REBOOT,NULL,0,NULL,0,NULL);

可是系统重新启动的时候还是不能切换,我已经把注册表信息
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
           "DefaultClientDriver"=- ; erase previous default
           "DefaultClientDriver"="Serial_Class"
          
[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers]
        ;"DefaultClientDriver"=- ; erase previous default
        ; "DefaultClientDriver"="Mass_Storage_Class"
添加到HIVE BOOT SECTION和END HIVE BOOT SECTION之间了~~
请教高手

最新回复

如果不重启行不行?  详情 回复 发表于 2009-12-2 16:04
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么没有人回答啊~~~
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个以前试过,应该是可以的。
首先确认你做的修改保存住了,
然后两种模式都能工作。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
“首先确认你做的修改保存住了,”什么意思?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
怎么确认?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
用注册表工具看啊,PB不是有远程工具吗?
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

7
 
可以切换的,而且应该不需要重起吧,动态的切换
RegCloseKey(hDrvKey);
KernelIoControl (IOCTL_HAL_REBOOT,NULL,0,NULL,0,NULL);
在重起前是不是要刷注册表到文件系统中,有个函数叫FlushRegistry还是别的,查一下帮助文档吧
或者是注册表中把相应的项置上,这样Close注册表的时候会自动刷到Flash上的,不然重起注册表配置会丢
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
恩,LS说的对,我改了下应用程序,
[code]
        long lResult = 0;       
        lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szregRootKey, 0, KEY_ALL_ACCESS, &hDrvKey);
        if(ERROR_SUCCESS == lResult)
        {       
                WRITE_REG_SZ(L"DefaultClientDriver",szregDefaultClientDriver);                       
        }
        RegCloseKey(hDrvKey);

        lResult = RegFlushKey(HKEY_LOCAL_MACHINE);
        if(ERROR_SUCCESS == lResult)
        {       
                KernelIoControl (IOCTL_HAL_REBOOT,NULL,0,NULL,0,NULL);                       
        }
        else
        {
                AfxMessageBox(L"Fail!");       
        }
可是这样还是不行,是不是要把USB的相关信息都要放到HIVE BOOT SECTION和END HIVE BOOT SECTION之间啊??
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 
LS说的对,我把应用程序改成如下:
[code]
        long lResult = 0;       
        lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szregRootKey, 0, KEY_ALL_ACCESS, &hDrvKey);
        if(ERROR_SUCCESS == lResult)
        {       
                WRITE_REG_SZ(L"DefaultClientDriver",szregDefaultClientDriver);                       
        }
        RegCloseKey(hDrvKey);

        lResult = RegFlushKey(HKEY_LOCAL_MACHINE);
        if(ERROR_SUCCESS == lResult)
        {       
                KernelIoControl (IOCTL_HAL_REBOOT,NULL,0,NULL,0,NULL);                       
        }
        else
        {
                AfxMessageBox(L"Fail!");       
        }

可是还是不行~
是不是USB的相关信息都要放到HIVE BOOT SECTION和END HIVE BOOT SECTION之间啊?
请教高手
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
请确认修改的注册表,重启后是不是保存住了。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

11
 
我觉得改注册不行,应该调用USB function controller driver
createfile("UFN1:"...
deviceiocontrol(...IOCTL_UFN_CHANGE_CURRENT_CLIENT
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

12
 
10楼说得对。
看看这篇文章,上面有代码。
http://www.eggheadcafe.com/software/aspnet/29416837/how-to-switch-default-usb.aspx
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

13
 
学习一下
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

14
 
学习一下
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 
如果不重启行不行?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
报名赢【小米双肩包、contigo水杯】 | TI MSPM0 系列 MCU 再添新成员
了解TI 前沿新品——高性能与高性价比的优秀组合 MSPM0G351x / MSPM0L111x,4月24日(周四)上午10:00直播~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 5

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表