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

Function Ext2QueryDrvLetter

Ext2Mgr/enumDisk.cpp:995–1040  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

993}
994
995BOOL
996Ext2QueryDrvLetter(
997 PEXT2_LETTER drvLetter
998 )
999{
1000 HANDLE hVolume;
1001 NT::NTSTATUS status = STATUS_SUCCESS;
1002 DWORD rc = 0;
1003
1004 drvLetter->DrvType = Ext2QueryDrive(drvLetter->Letter,
1005 drvLetter->SymLink);
1006
1007 if (drvLetter->DrvType == DRIVE_NO_ROOT_DIR) {
1008 drvLetter->bUsed = FALSE;
1009 goto errorout;
1010 } else {
1011 drvLetter->bUsed = TRUE;
1012 }
1013
1014 if (drvLetter->Letter == 'A' ||
1015 drvLetter->Letter == 'B' ) {
1016 drvLetter->bUsed = TRUE;
1017 goto errorout;
1018 }
1019
1020 if (drvLetter->DrvType == DRIVE_REMOVABLE ||
1021 drvLetter->DrvType == DRIVE_FIXED) {
1022
1023 status = Ext2Open(drvLetter->SymLink, &hVolume, EXT2_DESIRED_ACCESS);
1024 if (!NT_SUCCESS(status) && status != STATUS_ACCESS_DENIED) {
1025 drvLetter->bInvalid = TRUE;
1026 goto errorout;
1027 }
1028
1029 drvLetter->Extent = Ext2QueryVolumeExtents(hVolume);
1030 if (drvLetter->DrvType == DRIVE_REMOVABLE) {
1031 drvLetter->SDN = Ext2QueryDeviceNumber(hVolume);
1032 }
1033
1034 Ext2Close(&hVolume);
1035 }
1036
1037errorout:
1038
1039 return NT_SUCCESS(status);
1040}
1041
1042
1043PEXT2_LETTER Ext2GetFirstUnusedDrvLetter()

Callers 4

Ext2LoadDrvLetterFunction · 0.85
Ext2AssignDrvLetterFunction · 0.85
Ext2RemoveMountPointFunction · 0.85
DriverChangeNotifyMethod · 0.85

Calls 5

Ext2OpenFunction · 0.85
Ext2QueryVolumeExtentsFunction · 0.85
Ext2QueryDeviceNumberFunction · 0.85
Ext2QueryDriveFunction · 0.70
Ext2CloseFunction · 0.70

Tested by

no test coverage detected