MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2QueryDeviceNumber

Function Ext2QueryDeviceNumber

Ext2Mgr/enumDisk.cpp:955–993  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

953}
954
955PSTORAGE_DEVICE_NUMBER
956Ext2QueryDeviceNumber(HANDLE hVolume)
957{
958 ULONG dataSize;
959 PSTORAGE_DEVICE_NUMBER SDN = NULL;
960
961 NT::NTSTATUS status;
962 NT::IO_STATUS_BLOCK ioSb;
963
964 dataSize = sizeof(STORAGE_DEVICE_NUMBER);
965
966QuerySDN:
967
968 SDN = (PSTORAGE_DEVICE_NUMBER)malloc(dataSize);
969 if (NULL == SDN) {
970 goto errorout;
971 }
972 memset(SDN, 0, dataSize);
973
974 status = NT::ZwDeviceIoControlFile(
975 hVolume, NULL, NULL, NULL, &ioSb,
976 IOCTL_STORAGE_GET_DEVICE_NUMBER,
977 NULL, 0, SDN, dataSize );
978
979 if (status == STATUS_BUFFER_TOO_SMALL) {
980 free(SDN); SDN = NULL;
981 dataSize += sizeof(STORAGE_DEVICE_NUMBER);
982 goto QuerySDN;
983 }
984
985 if (!NT_SUCCESS(status)) {
986 free(SDN); SDN = NULL;
987 goto errorout;
988 }
989
990errorout:
991
992 return SDN;
993}
994
995BOOL
996Ext2QueryDrvLetter(

Callers 1

Ext2QueryDrvLetterFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected