ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:7877回复:37

怎样写一个驱动就能禁止光驱、软驱、USB,高分相送

楼主#
更多 发布于:2004-07-20 18:15
怎样写一个驱动就能禁止光驱、软驱、USB,高分相送

最新喜欢:

pilixuankepilixu... David_211David_...
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-14 13:17
已经搞定,现在光驱、软驱测试通过
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-19 16:06
基本上就是用IoGetRelatedDeviceObject挂接设备
    fileSysDevice = IoGetRelatedDeviceObject( fileObject );
pDriverObject = fileSysDevice->DriverObject;

然后拦截此DriverObject的IRP_MJ_CREATE、IRP_MJ_SET_INFORMATION、IRP_MJ_DEVICE_CONTROL
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-20 10:56
返回STATUS_INSUFFICIENT_RESOURCES就行了
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-22 10:35
对\\Device\\Floppy0拦截,应该可以的
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-24 14:37
U盘和移动硬盘可以通过应用程序判断,先取到盘符,再根据盘符
取得此盘符所在的位置,是USB口的就是移动硬盘了
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-24 14:39
当然要先判断一下是否为 可移动设备,如不是再做上面判断
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-25 13:04
不好意思,最近一直在外地出差,等回来把代码放上来
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-06 10:12
long GetBusType(char disk)
{
CHAR szDriveName[MAX_PATH];
sprintf (szDriveName,"\\\\.\\%c:", disk);
HANDLE hDevice;

hDevice = CreateFile (szDriveName,
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hDevice == INVALID_HANDLE_VALUE)
{
return -1;
}
else
{
DWORD dwBytesReturned, dwRetCode;
int buf_size = 4096;
char buf[4096];

STORAGE_PROPERTY_QUERY query;

memset ((void *)&query, 0, sizeof (query));
query.PropertyId = StorageDeviceProperty;
query.QueryType = PropertyStandardQuery;

dwRetCode = DeviceIoControl (hDevice,
IOCTL_STORAGE_QUERY_PROPERTY,
&query,
sizeof (query),
(STORAGE_DEVICE_DESCRIPTOR *) buf,
buf_size,
&dwBytesReturned,
NULL);
if(!dwRetCode)
{
CloseHandle (hDevice);
return -1;
}
STORAGE_DEVICE_DESCRIPTOR   *info= (STORAGE_DEVICE_DESCRIPTOR *)buf;

CloseHandle (hDevice);
return info->BusType;
}
}
void test()
{
int iType = GetDriveType("C:\\");
switch( iType )
{
case 0:
case 1:
break;
case DRIVE_REMOVABLE:
//这儿是USB
break;
case DRIVE_CDROM:
break;
case DRIVE_FIXED:
long lBusType = GetBusType('C');
if(lBusType != BusTypeUsb)
{
//这儿是硬盘分区
}
else
{
//这儿是移动硬盘分区
}
break;
case DRIVE_REMOTE:
break;
case DRIVE_RAMDISK:
break;
}
}
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-06 16:14
写个程序调用test()函数,应该不会出问题的
游客

返回顶部