知道vxd的入(50分)

  • 主题发起人 主题发起人 love4myxsg
  • 开始时间 开始时间
L

love4myxsg

Unregistered / Unconfirmed
GUEST, unregistred user!
如何知道一个vxd是已经加载了的? 可能我的问法有问题。事情是这样的。关于系统system下面的那个iosubsys目录下面的vxd文件。需要添加一个新的vxd。并且重新启动
使他们生效。如果没有重新启动就运行了应用程序app.exe的话,可能会造成灾难性的后果。
虽然我可以在应用程序app.exe里面,先检测那个目录下面是否有该文件,作出提示
(如果没有先拷贝,提示用户重新启动,如果不成功,app.exe 中断)。但是还不知道如何----才能---确保用户不会在拷贝完毕后忘记重新启动操作,万一他忘记了
(此时应用程序app.exe检测该vxd文件是有的。。。不过如果没有重新启动,vxd实际上没有正确加载,就这样运行app.exe的话。。。后果不堪设想。。。。

哪位兄弟能想个好方法解决呢?
 
1。可以通过注册表中的VXD键值来
2。动态检测。
 
与vxd通信啊,注册表里又看不出来是否加载!
这是我给公司写的代码,监测驱动工作是否正常!

mhDevice := CreateFile('//./PHYSICALDRIVE0',
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if ( mhDevice <> INVALID_HANDLE_VALUE ) then begin // 设备句柄有效
mSuccess:= DeviceIoControl( mhDevice,IOCTL_READ, nil, 0, @mRead,
sizeof(mIOCTL_READ), mBytesReturned, nil );
CloseHandle( mhDevice );
if mSuccess and (mBytesReturned <> 0 ) then begin // 通讯成功则显示相关参数
Result:=mRead.mString);
end else begin
Raise Exception.Create ('没有发现驱动!');
end;
end else begin
Raise Exception.Create ('没有发现驱动!');
end;
 
后退
顶部