예제 #1
0
const IStream* FileStorage::ReadFileHelper(const FileEntry& file, FileDataType dataType /*= FileDataType::Binary*/) const
{
	const IStream* resultStream = OnReadFile(file, dataType);
	RETURN_NULL_IF_NULL(resultStream);

	const CoderChain* coderChain = GetFileCoderChain(file);
	if (coderChain != nullptr)
	{
		if (IsWholeFileCoding())
		{
			MemoryStream* tempStream = new MemoryStream(file.OriginalSize(), false);
			coderChain->Decode(*resultStream, *tempStream);
			const auto data = tempStream->CurrentBuffer();
			SAFE_DELETE(tempStream);
			MemoryStream* outputStream = new MemoryStream(data);
			resultStream = outputStream;
		}
		else
		{
			resultStream = new BlockCodeReadStream(*resultStream, BlockSize(), *coderChain, file);
		}
	}

	return resultStream;
}
예제 #2
0
//-----------------------------------------------------------------------------
// Name: MainDialogProc
// Desc: Handles dialog messages
//-----------------------------------------------------------------------------
INT_PTR CALLBACK MainDialogProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
    HRESULT hr;

    switch( msg ) 
    {
        case WM_INITDIALOG:
        {
            // Set the icon for this dialog.
            HICON hIcon = LoadIcon( (HINSTANCE)GetModuleHandle(NULL), 
                                    MAKEINTRESOURCE( IDI_ICON ) );
            PostMessage( hDlg, WM_SETICON, ICON_BIG,   (LPARAM)hIcon );  // Set big icon
            PostMessage( hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon );  // Set small icon

            EnableWindow( GetDlgItem( hDlg, IDC_PLAY_EFFECTS ), FALSE );

            hr = InitDirectInput( hDlg );
            if( FAILED(hr) )
            {
                MessageBox( NULL, _T("Error Initializing DirectInput. ")
                                  _T("The sample will now exit."),
                                  _T("ReadFFE"), MB_ICONERROR | MB_OK );                
                EndDialog( hDlg, TRUE );
            }
            return TRUE;
        }

        case WM_COMMAND:
            switch( LOWORD(wParam) )
            {
                case IDCANCEL:
                    EndDialog( hDlg, FALSE ); 
                    return TRUE;

                case IDC_READ_FILE:
                    if( FAILED( hr = OnReadFile( hDlg ) ) )
                    {
                        MessageBox( NULL, _T("Error reading effects file."),
                                          _T("ReadFFE"), MB_ICONERROR | MB_OK );
                        EnableWindow( GetDlgItem( hDlg, IDC_PLAY_EFFECTS ), FALSE );
                    }
                    return TRUE;

                case IDC_PLAY_EFFECTS:
                    if( FAILED( hr = OnPlayEffects( hDlg ) ) )
                    {
                        MessageBox( NULL, _T("Error playing DirectInput effects. ")
                                          _T("The sample will now exit."), 
                                          _T("ReadFFE"), MB_ICONERROR | MB_OK );
                        EndDialog( hDlg, 1 );
                    }
                    return TRUE;
            }
            break;

        case WM_DESTROY:
            FreeDirectInput();   
            return TRUE;
    }

    return FALSE;
}
예제 #3
0
void OnFileSystemCommand(
                        SerializerContext* cmdContext,
                        SerializerContext* respContext,
                        unsigned char* responseBuffer,
                        unsigned short responseBufferSize)
{
  nmc.cmdContext = cmdContext;
  nmc.respContext = respContext;
  nmc.responseBuffer = responseBuffer;
  nmc.responseBufferSize = responseBufferSize;

  unsigned char fsCmd = 0;
  Get(cmdContext, (void*)&fsCmd, sizeof(fsCmd));
  switch(fsCmd){
  case Mount:
    OnMount(&nmc);
    break;
  case UnMount:
    OnUnMount(&nmc);
    break;
  case OpenFile:
    OnOpenFile(&nmc);
    break;
  case CloseFile:
    OnCloseFile(&nmc);
    break;
  case ReadFile:
    OnReadFile(&nmc);
    break;
  case WriteFile:
    OnWriteFile(&nmc);
    break;
  case SeekFile:
    OnSeekFile(&nmc);
    break;
  case TruncateFile:
    OnTruncateFile(&nmc);
    break;
  case SyncFile:
    OnSyncFile(&nmc);
    break;
  case ReadString:
    OnReadString(&nmc);
    break;
  case WriteString:
    OnWriteString(&nmc);
    break;
  case GetFilePosition:
    OnGetFilePosition(&nmc);
    break;
  case GetEndOfFile:
    OnGetEndOfFile(&nmc);
    break;
  case GetFileSize:
    OnGetFileSize(&nmc);
    break;
  case GetFileError:
    OnGetFileError(&nmc);
    break;
  case OpenDir:
    OnOpenDir(&nmc);
    break;
  case CloseDir:
    OnCloseDir(&nmc);
    break;
  case ReadDir:
    OnReadDir(&nmc);
    break;
  case MakeDir:
    OnMakeDir(&nmc);
    break;
  case ChangeDir:
    OnChangeDir(&nmc);
    break;
  case GetCurrentDir:
    OnGetCurrentDir(&nmc);
    break;
  case GetFreeSpace:
    OnGetFreeSpace(&nmc);
    break;
  case Unlink:
    OnUnlink(&nmc);
    break;
  case ChangeAttribute:
    OnChangeAttribute(&nmc);
    break;
  case ChangeTime:
    OnChangeTime(&nmc);
    break;
  case Rename:
    OnRename(&nmc);
    break;
  case GetDiskStatus:
    OnGetDiskStatus(&nmc);
    break;
  default:
    vt100TextColor(VT100_Red, VT100_Black);
    printf("%s: invalid command: %i\r\n", __func__, (int)fsCmd);
    vt100TextDefault();
    break;
  }
}