方法 : XACT 入出力コールバックの使用
XACT で実行される入出力 (I/O) 操作の既定の動作をオーバーライドするために I/O コールバックを使用する方法について説明します。この使用方法の実装例では、単純に XACT の既定の動作を再現しています。コールバックのこの実装例を変更することにより、XACT において所定の手順でゲームのカスタム リソース マネージャーを使用できるようになります。
I/O コールバックを使用するには
XACT_GETOVERLAPPEDRESULT_CALLBACK 関数を作成します。
注 この関数は、システムの GetOverlappedResult 関数の代わりに XACT によって呼び出されます。
BOOL getOverlappedResultCallback ( HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, BOOL bWait ) { return GetOverlappedResult(hFile,lpOverlapped,lpNumberOfBytesTransferred,bWait); }
XACT_READFILE_CALLBACK 関数を作成します。
注 この関数は、システムの ReadFile 関数の代わりに XACT によって呼び出されます。
BOOL readFileCallback ( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ) { return ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped); }
作成した I/O 関数を使用して XACT_FILEIO_CALLBACKS 構造体を設定します。
readFileCallback メンバーを XACT_READFILE_CALLBACK 関数に設定します。
getOverlappedResultCallback メンバーを XACT_GETOVERLAPPEDRESULT_CALLBACK 関数に設定します。
XACT_FILEIO_CALLBACKS fileIOCallbacks; fileIOCallbacks.getOverlappedResultCallback = getOverlappedResultCallback; fileIOCallbacks.readFileCallback = readFileCallback;
XACT_RUNTIME_PARAMETERS 構造体を設定し、fileIOCallbacks メンバーを XACT_FILEIO_CALLBACKS 構造体に設定します。
XACT_RUNTIME_PARAMETERS EngineParameters = {0}; EngineParameters.fileIOCallbacks = fileIOCallbacks;
「方法 : XACT の初期化」の説明に従って XACT エンジンを初期化します。
関連トピック
XACT の主要な概念の概要について説明します。