Share via


方法 : XACT 入出力コールバックの使用

XACT で実行される入出力 (I/O) 操作の既定の動作をオーバーライドするために I/O コールバックを使用する方法について説明します。この使用方法の実装例では、単純に XACT の既定の動作を再現しています。コールバックのこの実装例を変更することにより、XACT において所定の手順でゲームのカスタム リソース マネージャーを使用できるようになります。

I/O コールバックを使用するには

  1. XACT_GETOVERLAPPEDRESULT_CALLBACK 関数を作成します。

        この関数は、システムの GetOverlappedResult 関数の代わりに XACT によって呼び出されます。

    BOOL getOverlappedResultCallback (
        HANDLE hFile,
        LPOVERLAPPED lpOverlapped,
        LPDWORD lpNumberOfBytesTransferred,
        BOOL bWait )
    {
        return GetOverlappedResult(hFile,lpOverlapped,lpNumberOfBytesTransferred,bWait);
    }
    
  2. XACT_READFILE_CALLBACK 関数を作成します。

        この関数は、システムの ReadFile 関数の代わりに XACT によって呼び出されます。

    BOOL readFileCallback ( 
        HANDLE hFile,
        LPVOID lpBuffer,
        DWORD nNumberOfBytesToRead,
        LPDWORD lpNumberOfBytesRead,
        LPOVERLAPPED lpOverlapped )
    {
        return ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped);
    }
    
  3. 作成した I/O 関数を使用して XACT_FILEIO_CALLBACKS 構造体を設定します。

  4. readFileCallback メンバーを XACT_READFILE_CALLBACK 関数に設定します。

  5. getOverlappedResultCallback メンバーを XACT_GETOVERLAPPEDRESULT_CALLBACK 関数に設定します。

    XACT_FILEIO_CALLBACKS fileIOCallbacks;
    fileIOCallbacks.getOverlappedResultCallback = getOverlappedResultCallback;
    fileIOCallbacks.readFileCallback = readFileCallback;
    
  6. XACT_RUNTIME_PARAMETERS 構造体を設定し、fileIOCallbacks メンバーを XACT_FILEIO_CALLBACKS 構造体に設定します。

    XACT_RUNTIME_PARAMETERS EngineParameters = {0};
    
    EngineParameters.fileIOCallbacks = fileIOCallbacks;
    
  7. 方法 : XACT の初期化」の説明に従って XACT エンジンを初期化します。

関連トピック

XACT の主要な概念

XACT の主要な概念の概要について説明します。