This is the code:
PDRIVER_OBJECT diskDriverObject;
PDEVICE_OBJECT currDevice;
PFUNCTIONAL_DEVICE_EXTENSION fdo;
PSTORAGE_DEVICE_DESCRIPTOR deviceDescriptor;
char* serialNumber = {0};
int numOfDevices = 1;
int iii , bufferSize;
PIO_STACK_LOCATION IrpSp;
ULONG SNHASH;
NTSTATUS status = STATUS_SUCCESS;
UNICODE_STRING diskDrvName;
RtlInitUnicodeString(&diskDrvName, L"\\Driver\\disk");
ObReferenceObjectByName(diskDrvName, 0, NULL, 0, *IoDriverObjectType, KernelMode, NULL, &diskDriverObject));
currDevice = diskDriverObject->DeviceObject;
while (currDevice != NULL
)
{
currDevice = currDevice->NextDevice;
numOfDevices += 1;
}
DPRINT("numOfDevices: %02X \n", numOfDevices);
currDevice = diskDriverObject->DeviceObject;
for (iii = 0; iii < numOfDevices; ++iii)
{
if (currDevice != NULL)
{
DPRINT("Device number: %02X \n", iii);
if (currDevice->Vpb->RealDevice->Flags & DO_SYSTEM_BOOT_PARTITION)
{
fdo = (FUNCTIONAL_DEVICE_EXTENSION*)currDevice->DeviceExtension;
deviceDescriptor = fdo->DeviceDescriptor;
}
currDevice = currDevice->NextDevice;
}
}
Got BSOD on this line:
(currDevice->Vpb->RealDevice->Flags & DO_SYSTEM_BOOT_PARTITION)
Thank you in advance.