diff options
| author | hrydgard <hrydgard@gmail.com> | 2010-01-11 23:28:54 +0000 |
|---|---|---|
| committer | hrydgard <hrydgard@gmail.com> | 2010-01-11 23:28:54 +0000 |
| commit | 1bca5e8c86f0dbb5a70ca2cabe47d2ee2b216dc7 (patch) | |
| tree | 462299cbdca0b09003b6bc7fca819994b1e12478 /Source/Core | |
| parent | ddcb39d8e376ee1fdb5bee9a3ddd025d3d26f219 (diff) | |
(nothing of value, just reindentation and removal of commented out includes. i'm just cleaning my svn client here)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4808 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DiscIO/Src/DriveBlob.cpp | 196 |
1 files changed, 99 insertions, 97 deletions
diff --git a/Source/Core/DiscIO/Src/DriveBlob.cpp b/Source/Core/DiscIO/Src/DriveBlob.cpp index 5b5bdacecb..ff9a5551c4 100644 --- a/Source/Core/DiscIO/Src/DriveBlob.cpp +++ b/Source/Core/DiscIO/Src/DriveBlob.cpp @@ -20,121 +20,123 @@ namespace DiscIO { - DriveReader::DriveReader(const char *drive) - { -#ifdef _WIN32 - char path[MAX_PATH]; - strncpy(path, drive, 3); - path[2] = 0; - sprintf(path, "\\\\.\\%s", drive); - SectorReader::SetSectorSize(2048); - hDisc = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL); - if (hDisc != INVALID_HANDLE_VALUE) - { - // Do a test read to make sure everything is OK, since it seems you can get - // handles to empty drives. - DWORD not_used; - u8 *buffer = new u8[m_blocksize]; - if (!ReadFile(hDisc, buffer, m_blocksize, (LPDWORD)¬_used, NULL)) - { - delete [] buffer; - // OK, something is wrong. - CloseHandle(hDisc); - hDisc = INVALID_HANDLE_VALUE; - return; - } - delete [] buffer; - - #ifdef _LOCKDRIVE // Do we want to lock the drive? - // Lock the compact disc in the CD-ROM drive to prevent accidental - // removal while reading from it. - pmrLockCDROM.PreventMediaRemoval = TRUE; - DeviceIoControl(hDisc, IOCTL_CDROM_MEDIA_REMOVAL, - &pmrLockCDROM, sizeof(pmrLockCDROM), NULL, - 0, &dwNotUsed, NULL); - #endif -#else - file_ = fopen(drive, "rb"); - if (file_) - { -#endif - } - else - { - PanicAlert("Load from DVD backup failed or no disc in drive %s", drive); - } - } // DriveReader::DriveReader - DriveReader::~DriveReader() - { +DriveReader::DriveReader(const char *drive) +{ #ifdef _WIN32 - #ifdef _LOCKDRIVE // Do we want to lock the drive? - // Unlock the disc in the CD-ROM drive. - pmrLockCDROM.PreventMediaRemoval = FALSE; - DeviceIoControl (hDisc, IOCTL_CDROM_MEDIA_REMOVAL, - &pmrLockCDROM, sizeof(pmrLockCDROM), NULL, - 0, &dwNotUsed, NULL); - #endif - if (hDisc != INVALID_HANDLE_VALUE) + char path[MAX_PATH]; + strncpy(path, drive, 3); + path[2] = 0; + sprintf(path, "\\\\.\\%s", drive); + SectorReader::SetSectorSize(2048); + hDisc = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL); + if (hDisc != INVALID_HANDLE_VALUE) + { + // Do a test read to make sure everything is OK, since it seems you can get + // handles to empty drives. + DWORD not_used; + u8 *buffer = new u8[m_blocksize]; + if (!ReadFile(hDisc, buffer, m_blocksize, (LPDWORD)¬_used, NULL)) { + delete [] buffer; + // OK, something is wrong. CloseHandle(hDisc); hDisc = INVALID_HANDLE_VALUE; + return; } + delete [] buffer; + + #ifdef _LOCKDRIVE // Do we want to lock the drive? + // Lock the compact disc in the CD-ROM drive to prevent accidental + // removal while reading from it. + pmrLockCDROM.PreventMediaRemoval = TRUE; + DeviceIoControl(hDisc, IOCTL_CDROM_MEDIA_REMOVAL, + &pmrLockCDROM, sizeof(pmrLockCDROM), NULL, + 0, &dwNotUsed, NULL); + #endif #else - fclose(file_); - file_ = 0; -#endif + file_ = fopen(drive, "rb"); + if (file_) + { +#endif } - - DriveReader *DriveReader::Create(const char *drive) + else { - DriveReader *reader = new DriveReader(drive); - if (!reader->IsOK()) - { - delete reader; - return 0; - } - return reader; + PanicAlert("Load from DVD backup failed or no disc in drive %s", drive); } +} // DriveReader::DriveReader - void DriveReader::GetBlock(u64 block_num, u8 *out_ptr) - { - u8 * lpSector = new u8[m_blocksize]; +DriveReader::~DriveReader() +{ #ifdef _WIN32 - u32 NotUsed; - u64 offset = m_blocksize * block_num; - LONG off_low = (LONG)offset & 0xFFFFFFFF; - LONG off_high = (LONG)(offset >> 32); - SetFilePointer(hDisc, off_low, &off_high, FILE_BEGIN); - if (!ReadFile(hDisc, lpSector, m_blocksize, (LPDWORD)&NotUsed, NULL)) - PanicAlert("Disc Read Error"); -#else - fseek(file_, m_blocksize*block_num, SEEK_SET); - fread(lpSector, 1, m_blocksize, file_); +#ifdef _LOCKDRIVE // Do we want to lock the drive? + // Unlock the disc in the CD-ROM drive. + pmrLockCDROM.PreventMediaRemoval = FALSE; + DeviceIoControl (hDisc, IOCTL_CDROM_MEDIA_REMOVAL, + &pmrLockCDROM, sizeof(pmrLockCDROM), NULL, + 0, &dwNotUsed, NULL); #endif - memcpy(out_ptr, lpSector, m_blocksize); - delete[] lpSector; + if (hDisc != INVALID_HANDLE_VALUE) + { + CloseHandle(hDisc); + hDisc = INVALID_HANDLE_VALUE; } +#else + fclose(file_); + file_ = 0; +#endif +} - bool DriveReader::ReadMultipleAlignedBlocks(u64 block_num, u64 num_blocks, u8 *out_ptr) +DriveReader *DriveReader::Create(const char *drive) +{ + DriveReader *reader = new DriveReader(drive); + if (!reader->IsOK()) { + delete reader; + return 0; + } + return reader; +} + +void DriveReader::GetBlock(u64 block_num, u8 *out_ptr) +{ + u8 * lpSector = new u8[m_blocksize]; #ifdef _WIN32 - u32 NotUsed; - u64 offset = m_blocksize * block_num; - LONG off_low = (LONG)offset & 0xFFFFFFFF; - LONG off_high = (LONG)(offset >> 32); - SetFilePointer(hDisc, off_low, &off_high, FILE_BEGIN); - if (!ReadFile(hDisc, out_ptr, (DWORD)(m_blocksize * num_blocks), (LPDWORD)&NotUsed, NULL)) - { - PanicAlert("Disc Read Error"); - return false; - } + u32 NotUsed; + u64 offset = m_blocksize * block_num; + LONG off_low = (LONG)offset & 0xFFFFFFFF; + LONG off_high = (LONG)(offset >> 32); + SetFilePointer(hDisc, off_low, &off_high, FILE_BEGIN); + if (!ReadFile(hDisc, lpSector, m_blocksize, (LPDWORD)&NotUsed, NULL)) + PanicAlert("Disc Read Error"); #else - fseek(file_, m_blocksize*block_num, SEEK_SET); - if(fread(out_ptr, 1, m_blocksize * num_blocks, file_) != m_blocksize * num_blocks) - return false; + fseek(file_, m_blocksize*block_num, SEEK_SET); + fread(lpSector, 1, m_blocksize, file_); #endif - return true; + memcpy(out_ptr, lpSector, m_blocksize); + delete[] lpSector; +} + +bool DriveReader::ReadMultipleAlignedBlocks(u64 block_num, u64 num_blocks, u8 *out_ptr) +{ +#ifdef _WIN32 + u32 NotUsed; + u64 offset = m_blocksize * block_num; + LONG off_low = (LONG)offset & 0xFFFFFFFF; + LONG off_high = (LONG)(offset >> 32); + SetFilePointer(hDisc, off_low, &off_high, FILE_BEGIN); + if (!ReadFile(hDisc, out_ptr, (DWORD)(m_blocksize * num_blocks), (LPDWORD)&NotUsed, NULL)) + { + PanicAlert("Disc Read Error"); + return false; } +#else + fseek(file_, m_blocksize*block_num, SEEK_SET); + if(fread(out_ptr, 1, m_blocksize * num_blocks, file_) != m_blocksize * num_blocks) + return false; +#endif + return true; +} + } // namespace |
