Exemplo n.º 1
0
static BOOL GetDriveInfo(TCHAR chDrive, DRIVE_INFO& di)
{
    DWORD dwDummy;
    TCHAR szFileSys[64];
    DWORD dwDriveFlags;

    _stprintf(di.szRootDir, TEXT("%c:\\"), chDrive);
	
    if (GetDriveType(di.szRootDir) != DRIVE_FIXED)
	return FALSE;

    if (!GetVolumeInformation(di.szRootDir, di.szVolName, sizeof(di.szVolName), 0, &dwDummy, &dwDriveFlags, szFileSys, sizeof(szFileSys)))
	return FALSE;

    TCHAR szError[256] = TEXT("");

    BOOL bInvalid = FALSE, bHasData = FALSE;
    BOOL bIsAfs = ValidateDrive(IsAnAfsPartition(di.szRootDir), IDS_ERROR_DRIVE_ALREADY_HAS_AFS, szError);
    if (!bIsAfs) {
	bInvalid |= ValidateDrive(dwDriveFlags & FS_VOL_IS_COMPRESSED, IDS_ERROR_DRIVE_COMPRESSED, szError);
	bInvalid |= ValidateDrive(lstrcmp(szFileSys, TEXT("NTFS")) != 0, IDS_ERROR_FS_IS_NOT_NTFS, szError);

	/* 
	 *  We are no longer going to require that afs drives be empty; we will give a warning instead.
	 *
	 *	bInvalid |= ValidateDrive(DoesDriveContainNT(di.szRootDir), IDS_ERROR_DRIVE_CONTAINS_NT, szError);
	 *	bRecycle = ValidateDrive(DriveHasRecycleBin(di.szRootDir), IDS_WARNING_DRIVE_HAS_RECYCLE_BIN, szError);
	 */
	if (!bInvalid)
	    bHasData = ValidateDrive(DoesDriveContainData(di.szRootDir), IDS_ERROR_DRIVE_HAS_DATA, szError);
    }	

    if (*szError) {
	lstrcpy(di.szVolName, szError);

	if (bIsAfs)
	    di.nImage = AFS_DISK_DRIVE_IMAGE;
	else if (bHasData)
	    di.nImage = DISK_DRIVE_WITH_WARNING_IMAGE;      // Treat this as a warning
	else
	    di.nImage = DISABLED_DISK_DRIVE_IMAGE;

	if (bIsAfs || bInvalid) {
	    di.bDisabled = TRUE;
	    di.dwFlags |= FLIF_DISALLOW_SELECT;
	}
    } else {
	di.nImage = DISK_DRIVE_IMAGE;

	if (lstrlen(di.szVolName) == 0)
	    GetString(di.szVolName, IDS_VOLUME_HAS_NO_NAME);
    }	

    lstrncpy(di.szSize, GetDriveSizeAsString(di.szRootDir), sizeof(di.szSize));

    return TRUE;
}
Exemplo n.º 2
0
void CDAudio_SDL_CDDrive_f( void )
{
	int i;
	int numdrives = SDL_CDNumDrives();

	if( Cmd_Argc() != 2 ) {
		Con_Print( "cddrive <drivenr>\n" );
		return;
	}

	i = atoi( Cmd_Argv( 1 ) );
	if( i >= numdrives ) {
		Con_Printf("Only %i drives!\n", numdrives );
		return;
	}

	if( cd )
		SDL_CDClose( cd );

	cd = SDL_CDOpen( i );
	if( !cd ) {
		Con_Printf( "Couldn't open drive %i.\n", i );
		return;
	}

	if( !CD_INDRIVE( SDL_CDStatus( cd ) ) )
		Con_Printf( "No cd in drive %i.\n", i );
	else if( !IsAudioCD() )
		Con_Printf( "The CD in drive %i is not an audio CD.\n", i );

	ValidateDrive();
}
Exemplo n.º 3
0
int CDAudio_SysGetAudioDiskInfo (void)
{
	if( ValidateDrive() ) // everything > 0 is ok, 0 is trayempty and -1 is error
		return cd->numtracks;
	return -1;
}