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

Function Ext2QueryVolumeFS

Ext2Mgr/enumDisk.cpp:2125–2189  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2123}
2124
2125BOOL
2126Ext2QueryVolumeFS(
2127 HANDLE Handle,
2128 PEXT2_VOLUME volume
2129 )
2130{
2131 struct ext2_super_block *sb = NULL;
2132 union swap_header* swap = NULL;
2133 PUCHAR buffer = NULL;
2134
2135
2136 NT::NTSTATUS status;
2137
2138 buffer = (PUCHAR)malloc(PAGE_SIZE);
2139 if (!buffer) {
2140 return FALSE;
2141 }
2142
2143 swap = (union swap_header*)&buffer[SWAP_HEADER_OFFSET];
2144 sb = (struct ext2_super_block *)&buffer[SUPER_BLOCK_OFFSET];
2145
2146 status = Ext2Read( Handle, FALSE, volume->FssInfo.BytesPerSector,
2147 (ULONGLONG)0,PAGE_SIZE, (PUCHAR) buffer);
2148
2149 if (!NT_SUCCESS(status)) {
2150 free(buffer);
2151 return FALSE;
2152 }
2153
2154 if (sb->s_magic == EXT2_SUPER_MAGIC) {
2155
2156 volume->FsaInfo.FileSystemNameLength = 8;
2157 volume->FsaInfo.FileSystemName[0] = (WCHAR)'E';
2158 volume->FsaInfo.FileSystemName[1] = (WCHAR)'X';
2159 volume->FsaInfo.FileSystemName[2] = (WCHAR)'T';
2160 volume->FsaInfo.FileSystemName[4] = 0;
2161
2162 if ((sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV) ||
2163 (sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_RECOVER) ||
2164 (sb->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL) ) {
2165 volume->FsaInfo.FileSystemName[3] = (WCHAR)'3';
2166 volume->EVP.bExt3 = TRUE;
2167 } else {
2168 volume->FsaInfo.FileSystemName[3] = (WCHAR)'2';
2169 volume->EVP.bExt2 = TRUE;
2170 }
2171 memcpy(&volume->EVP.UUID[0], &sb->s_uuid[0], 16);
2172 goto errorout;
2173 }
2174
2175 if ((memcmp(swap->magic.magic, SWAP_HEADER_MAGIC_V1, 10) == 0) ||
2176 (memcmp(swap->magic.magic, SWAP_HEADER_MAGIC_V2, 10) == 0)) {
2177 volume->FsaInfo.FileSystemNameLength = 8;
2178 volume->FsaInfo.FileSystemName[0] = (WCHAR)'S';
2179 volume->FsaInfo.FileSystemName[1] = (WCHAR)'W';
2180 volume->FsaInfo.FileSystemName[2] = (WCHAR)'A';
2181 volume->FsaInfo.FileSystemName[3] = (WCHAR)'P';
2182 volume->FsaInfo.FileSystemName[4] = 0;

Callers 1

Ext2InitializeVolumeFunction · 0.85

Calls 1

Ext2ReadFunction · 0.70

Tested by

no test coverage detected