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

Function Ext2QueryVolumeExtents

Ext2Mgr/enumDisk.cpp:918–953  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

916}
917
918PVOLUME_DISK_EXTENTS
919Ext2QueryVolumeExtents(HANDLE hVolume)
920{
921 ULONG dataSize = 1024;
922 PVOLUME_DISK_EXTENTS dskExtents = NULL;
923
924 NT::NTSTATUS status;
925 NT::IO_STATUS_BLOCK ioSb;
926
927QueryExtent:
928
929 dskExtents = (PVOLUME_DISK_EXTENTS)malloc(dataSize);
930 if (NULL == dskExtents) {
931 goto errorout;
932 }
933
934 status = NT::ZwDeviceIoControlFile(
935 hVolume, NULL, NULL, NULL, &ioSb,
936 IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS,
937 NULL, 0, dskExtents, dataSize );
938
939 if (status == STATUS_BUFFER_TOO_SMALL) {
940 free(dskExtents); dskExtents = NULL;
941 dataSize += 1024;
942 goto QueryExtent;
943 }
944
945 if (!NT_SUCCESS(status)) {
946 free(dskExtents); dskExtents = NULL;
947 goto errorout;
948 }
949
950errorout:
951
952 return dskExtents;
953}
954
955PSTORAGE_DEVICE_NUMBER
956Ext2QueryDeviceNumber(HANDLE hVolume)

Callers 2

Ext2QueryDrvLetterFunction · 0.85
Ext2InitializeVolumeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected