首页
社区
课程
招聘
[求助]查询U盘容量
发表于: 2014-2-11 09:24 3893

[求助]查询U盘容量

2014-2-11 09:24
3893
当接入U盘,系统在根据注册表DiskDrive由底向上建立设备堆栈,逐个加载磁盘过滤驱动,而我的磁盘过滤设备位于Pdo之上,Fdo之下,即LowerFilters中设置的。
当进入我的设备的 DriverObject->DriverExtension->AddDevice指向DiskPerfAddDevice;的函数时,我想这时在该函数中获得U盘的容量,请问我该怎么去获得,该发送哪个类型的IRP来进行容量的查询?谢谢

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 53
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
NTSTATUS GetGeometry(PDEVICE_OBJECT pDiskDevObj, PDISK_GEOMETRY pDiskGeo)
/*++
Routine Description:
Returns the Geometry of Disk
Arguments:
Target Device Object representing the disk and Pointer to geometry structure
Return Value:
STATUS
--*/
{
IO_STATUS_BLOCK IoStatusBlock;
KEVENT Event;
PIRP pIrp;
NTSTATUS status;
KeInitializeEvent(&Event, NotificationEvent, FALSE);
pIrp = IoBuildDeviceIoControlRequest(
IOCTL_DISK_GET_DRIVE_GEOMETRY,
pDiskDevObj,
NULL,
0,
pDiskGeo,
sizeof(DISK_GEOMETRY),
FALSE,
&Event,
&IoStatusBlock);

if (!pIrp)
{
return STATUS_INSUFFICIENT_RESOURCES;
}
status = IoCallDriver(pDiskDevObj, pIrp);
if (status == STATUS_PENDING)
{
KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
status = IoStatusBlock.Status;
}
return status;
}
用这个能获得磁盘容量  别人告诉我的
2014-3-24 22:58
0
游客
登录 | 注册 方可回帖
返回
//