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

Function Ext2LoadCdroms

Ext2Mgr/enumDisk.cpp:1887–1966  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1885}
1886
1887BOOL
1888Ext2LoadCdroms()
1889{
1890 ULONG i = 0, j = 0;
1891 NT::NTSTATUS status;
1892 DWORD mediaType;
1893
1894 if (g_nCdroms == 0) {
1895 return TRUE;
1896 }
1897
1898 gCdroms = (PEXT2_CDROM) malloc(sizeof(EXT2_CDROM) * g_nCdroms);
1899 if (gCdroms == NULL) {
1900 return FALSE;
1901 }
1902 memset(gCdroms, 0, sizeof(EXT2_CDROM) * g_nCdroms);
1903
1904 while (i < g_nCdroms && j < 256) {
1905
1906 HANDLE Handle = NULL;
1907
1908 gCdroms[i].Magic[0] = EXT2_CDROM_DEVICE_MAGIC;
1909 gCdroms[i].Magic[1] = EXT2_CDROM_VOLUME_MAGIC;
1910 gCdroms[i].OrderNo = (UCHAR) j;
1911 gCdroms[i].bLoaded = FALSE;
1912 sprintf(gCdroms[i].Name, "\\Device\\Cdrom%d\0", j);
1913
1914 j++;
1915
1916 status = Ext2Open(gCdroms[i].Name, &Handle, EXT2_DESIRED_ACCESS);
1917 if (!NT_SUCCESS(status)) {
1918 continue;
1919 }
1920
1921 status = Ext2QueryProperty( Handle, StorageDeviceProperty,
1922 (PVOID)&gCdroms[i].SDD,
1923 sizeof(STORAGE_DEVICE_DESCRIPTOR)
1924 );
1925 if (!NT_SUCCESS(status)) {
1926 goto Next;
1927 }
1928
1929 status = Ext2QueryProperty( Handle, StorageAdapterProperty,
1930 (PVOID)&gCdroms[i].SAD,
1931 sizeof(STORAGE_ADAPTER_DESCRIPTOR)
1932 );
1933 if (!NT_SUCCESS(status)) {
1934 goto Next;
1935 }
1936
1937 status = Ext2QueryDisk(Handle, &gCdroms[i].DiskGeometry);
1938 if (NT_SUCCESS(status)) {
1939 gCdroms[i].bEjected = FALSE;
1940 } else {
1941 // (status == STATUS_NO_MEDIA_IN_DEVICE) {
1942 gCdroms[i].bEjected = TRUE;
1943 }
1944

Callers 2

OnInitDialogMethod · 0.85
OnRefreshMethod · 0.85

Calls 6

Ext2OpenFunction · 0.85
Ext2QueryPropertyFunction · 0.85
Ext2QueryDiskFunction · 0.85
Ext2QueryMediaTypeFunction · 0.85
Ext2QueryExt2PropertyFunction · 0.85
Ext2CloseFunction · 0.70

Tested by

no test coverage detected