内核驱动如何执行windows内部命令?

zhousw08   2008-7-23 08:21 楼主
在VC下,我们可以通过如下的代码去执行一些dos命令,
        char Command[100];
        while(1)
        {
                memset(Command,'\0',100);
                printf(">>"); scanf("%[^\n]",Command); getchar();
                if( (memcmp(Command,"exit",4) == 0) || (memcmp(Command,"quit",4) == 0) ) break;
                system(Command);
        }
但是在内核驱动程序中如何去实现这种功能呢?请教各位指点。

回复评论 (6)

这个比较麻烦,一个是NATIVE SUBSYSTEM 一个 WIN32 SUBSYSTEM. 你可以先写个 win32 程序然后装载上, 再发送windows内部消息让 win32 subsystem 来运行.嘿嘿

好,来个easy点的, 在开始-程序-启动的地方建立个批处理文件,下次一开机就运行鸟.
点赞  2008-7-23 11:42
只能通过应用程序来实现,可以让应用程序通过DeviceIoControl与驱动程序通讯,必要时可以使用内核对象。
怎么有这么怪的需求?
点赞  2008-7-23 21:44
在Windows下,DOS命令也得是在系统应用层支持的,在驱动层是无法调用的。

这个需求真奇怪,因为DOS命令直接涉及到了人机操作交互,而驱动层只是管理硬件的,两者的领域是不一样的。

难道你希望驱动层直接跟用户打交道?在Windows下这是很危险的,很容易就死翘翘的。
点赞  2008-7-23 21:56
这样是很危险,驱动可以在会话还没有建立就加载,也就是你还没有登录Windows就加载了。
这时候shell是根本不存在的,更别说DOS命令了。结果不可预测。
点赞  2008-9-4 15:40
Shell本身只是提供给用户的操作,如果程序要实现这些功能只能自己写了,用Linux的API实现,自己实现内核级的Shell
点赞  2008-9-4 21:46
引用: 引用 3 楼 shuiyan 的回复:
在Windows下,DOS命令也得是在系统应用层支持的,在驱动层是无法调用的。

这个需求真奇怪,因为DOS命令直接涉及到了人机操作交互,而驱动层只是管理硬件的,两者的领域是不一样的。

难道你希望驱动层直接跟用户打交道?在Windows下这是很危险的,很容易就死翘翘的。


是啊
点赞  2008-9-19 20:07
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复