Beispiel #1
0
bool Win32AudioCDManager::tryAddDrive(char drive, DriveList &drives) {
	Common::String drivePath = Common::String::format("%c:\\", drive);

	// Ensure it's an actual CD drive
	if (GetDriveTypeA(drivePath.c_str()) != DRIVE_CDROM)
		return false;

	debug(2, "Detected drive %c:\\ as a CD drive", drive);
	drives.push_back(drive);
	return true;
}
Beispiel #2
0
void EnumerateDrivesAndPartitions()
{
	WCHAR name[MAX_PATH+1];
	for (DWORD i=0; i<1024; i++)
	{
		wsprintf(name, L"\\\\.\\PhysicalDrive%d", i);
		auto h = CreateFile(name, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
		if (h==INVALID_HANDLE_VALUE)
			continue;
		auto d = new Drive();
		d->Init(h, i, name);
		g_drives.push_back(shared_ptr<Drive>(d));
		CloseHandle(h);
	}
}