|
Navigation
- Home
- Community
- Development
- myReactOS
- Fundraiser 2012
Doxygen
- Main Page
- Alphabetical List
- Data Structures
- Directories
- File List
- Data Fields
- Globals
- Related Pages
Search
|
|
|
Definition at line 76 of file blockdev.c.
Referenced by FsRecExt2FsControl(), FsRecNtfsFsControl(), FsRecUdfsFsControl(), and FsRecVfatFsControl().
{
DISK_GEOMETRY DiskGeometry;
IO_STATUS_BLOCK IoStatusBlock;
KEVENT Event;
PIRP Irp;
NTSTATUS Status;
ULONG ControlCode;
PAGED_CODE();
switch (DeviceObject->DeviceType)
{
case FILE_DEVICE_CD_ROM:
ControlCode = IOCTL_CDROM_GET_DRIVE_GEOMETRY;
break;
case FILE_DEVICE_DISK:
ControlCode = IOCTL_DISK_GET_DRIVE_GEOMETRY;
break;
default:
return FALSE;
}
KeInitializeEvent(&Event, SynchronizationEvent, FALSE);
Irp = IoBuildDeviceIoControlRequest(ControlCode,
DeviceObject,
NULL,
0,
&DiskGeometry,
sizeof(DISK_GEOMETRY),
FALSE,
&Event,
&IoStatusBlock);
if (!Irp) return FALSE;
IoGetNextIrpStackLocation(Irp)->Flags |= SL_OVERRIDE_VERIFY_VOLUME;
Status = IoCallDriver(DeviceObject, Irp);
if (Status == STATUS_PENDING)
{
KeWaitForSingleObject(&Event,
Executive,
KernelMode,
FALSE,
NULL);
Status = IoStatusBlock.Status;
}
if (!NT_SUCCESS(Status)) return FALSE;
if (!DiskGeometry.BytesPerSector) return FALSE;
*SectorSize = DiskGeometry.BytesPerSector;
return TRUE;
}
|
Generated on Sun May 27 2012 05:23:47 for ReactOS by
1.7.6.1
|