在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);
}
但是在内核驱动程序中如何去实现这种功能呢?请教各位指点。
这个比较麻烦,一个是NATIVE SUBSYSTEM 一个 WIN32 SUBSYSTEM. 你可以先写个 win32 程序然后装载上, 再发送windows内部消息让 win32 subsystem 来运行.嘿嘿
好,来个easy点的, 在开始-程序-启动的地方建立个批处理文件,下次一开机就运行鸟.
只能通过应用程序来实现,可以让应用程序通过DeviceIoControl与驱动程序通讯,必要时可以使用内核对象。
怎么有这么怪的需求?
在Windows下,DOS命令也得是在系统应用层支持的,在驱动层是无法调用的。
这个需求真奇怪,因为DOS命令直接涉及到了人机操作交互,而驱动层只是管理硬件的,两者的领域是不一样的。
难道你希望驱动层直接跟用户打交道?在Windows下这是很危险的,很容易就死翘翘的。
这样是很危险,驱动可以在会话还没有建立就加载,也就是你还没有登录Windows就加载了。
这时候shell是根本不存在的,更别说DOS命令了。结果不可预测。
Shell本身只是提供给用户的操作,如果程序要实现这些功能只能自己写了,用Linux的API实现,自己实现内核级的Shell