ホーム › Graphics.Direct3D.Dxc › IDxcUtils
IDxcUtils
COMメソッド 13
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| pBlob | IDxcBlob* | in | 元データとなる既存Blobを指すポインタ。 |
| offset | DWORD | in | 切り出しを開始するバイトオフセットを指定する。 |
| length | DWORD | in | 切り出すバイト長を指定する。 |
| ppResult | IDxcBlob** | out | 生成された部分Blobを受け取る出力ポインタ。 |
vtbl 4 HRESULT CreateBlobFromPinned(void* pData, DWORD size, DXC_CP codePage, IDxcBlobEncoding** ppBlobEncoding)
| pData | void* | in | ピン留め済みのデータを指すポインタ。寿命は呼び出し側が保証する。 |
| size | DWORD | in | データのバイト長を指定する。 |
| codePage | DXC_CP | in | データのコードページ番号を指定する。バイナリならDXC_CP_ACPなど。 |
| ppBlobEncoding | IDxcBlobEncoding** | out | 生成されたエンコード付きBlobを受け取る出力ポインタ。 |
vtbl 5 HRESULT MoveToBlob(void* pData, IMalloc* pIMalloc, DWORD size, DXC_CP codePage, IDxcBlobEncoding** ppBlobEncoding)
| pData | void* | in | Blobへ所有権を移すデータを指すポインタ。 |
| pIMalloc | IMalloc* | in | データの解放に用いるメモリアロケータを指すポインタ。 |
| size | DWORD | in | データのバイト長を指定する。 |
| codePage | DXC_CP | in | データのコードページ番号を指定する。 |
| ppBlobEncoding | IDxcBlobEncoding** | out | 生成されたエンコード付きBlobを受け取る出力ポインタ。 |
vtbl 6 HRESULT CreateBlob(void* pData, DWORD size, DXC_CP codePage, IDxcBlobEncoding** ppBlobEncoding)
| pData | void* | in | コピー元のデータを指すポインタ。 |
| size | DWORD | in | データのバイト長を指定する。 |
| codePage | DXC_CP | in | データのコードページ番号を指定する。 |
| ppBlobEncoding | IDxcBlobEncoding** | out | 内容を複製したエンコード付きBlobを受け取る出力ポインタ。 |
vtbl 7 HRESULT LoadFile(LPWSTR pFileName, DXC_CP* pCodePage, IDxcBlobEncoding** ppBlobEncoding)
| pFileName | LPWSTR | in | 読み込むファイルのパス(UTF-16)を指すポインタ。 |
| pCodePage | DXC_CP* | inoptional | ファイル内容のコードページを指すポインタ。NULL可で自動判定。 |
| ppBlobEncoding | IDxcBlobEncoding** | out | ファイル内容を格納したエンコード付きBlobを受け取る出力ポインタ。 |
| pBlob | IDxcBlob* | in | ストリーム化する元Blobを指すポインタ。 |
| ppStream | IStream** | out | 生成された読み取り専用ストリームを受け取る出力ポインタ。 |
vtbl 9 HRESULT CreateDefaultIncludeHandler(IDxcIncludeHandler** ppResult)
| ppResult | IDxcIncludeHandler** | out | 既定のファイルシステムベースのインクルードハンドラを受け取る出力ポインタ。 |
vtbl 10 HRESULT GetBlobAsUtf8(IDxcBlob* pBlob, IDxcBlobUtf8** ppBlobEncoding)
| pBlob | IDxcBlob* | in | 変換元のBlobを指すポインタ。 |
| ppBlobEncoding | IDxcBlobUtf8** | out | UTF-8へ変換した内容を保持するBlobを受け取る出力ポインタ。 |
vtbl 11 HRESULT GetBlobAsWide(IDxcBlob* pBlob, IDxcBlobUtf16** ppBlobEncoding)
| pBlob | IDxcBlob* | in | 変換元のBlobを指すポインタ。 |
| ppBlobEncoding | IDxcBlobUtf16** | out | UTF-16へ変換した内容を保持するBlobを受け取る出力ポインタ。 |
vtbl 12 HRESULT GetDxilContainerPart(DxcBuffer* pShader, DWORD DxcPart, void** ppPartData, DWORD* pPartSizeInBytes)
| pShader | DxcBuffer* | in | 対象となるDXILコンテナを記述するバッファを指すポインタ。 |
| DxcPart | DWORD | in | 取得するパートを示す4文字コード(FourCC)を指定する。 |
| ppPartData | void** | out | 見つかったパートのデータ先頭を受け取る出力ポインタ。 |
| pPartSizeInBytes | DWORD* | out | 見つかったパートのバイトサイズを受け取る出力先。 |
| pData | DxcBuffer* | in | リフレクション元となるデータを記述するバッファを指すポインタ。 |
| iid | GUID* | in | 要求するリフレクションインタフェースのIIDを指すポインタ。 |
| ppvReflection | void** | inout | 生成されたリフレクションオブジェクトを受け取る出力ポインタ。 |
vtbl 14 HRESULT BuildArguments(LPWSTR pSourceName, LPWSTR pEntryPoint, LPWSTR pTargetProfile, LPWSTR* pArguments, DWORD argCount, DxcDefine* pDefines, DWORD defineCount, IDxcCompilerArgs** ppArgs)
| pSourceName | LPWSTR | inoptional | 診断表示用のソース名(UTF-16)を指すポインタ。NULL可。 |
| pEntryPoint | LPWSTR | inoptional | シェーダのエントリポイント関数名(UTF-16)を指すポインタ。 |
| pTargetProfile | LPWSTR | in | ターゲットプロファイルを表す文字列を指すポインタ。 |
| pArguments | LPWSTR* | inoptional | 追加の引数の配列を指すポインタ。NULL可。 |
| argCount | DWORD | in | pArguments配列の要素数を指定する。 |
| pDefines | DxcDefine* | in | プリプロセッサ定義の配列を指すポインタ。NULL可。 |
| defineCount | DWORD | in | pDefines配列の要素数を指定する。 |
| ppArgs | IDxcCompilerArgs** | out | 構築されたコンパイラ引数オブジェクトを受け取る出力ポインタ。 |
| pPDBBlob | IDxcBlob* | in | 解析対象のPDB Blobを指すポインタ。 |
| ppHash | IDxcBlob** | out | PDBに含まれるハッシュ情報を格納したBlobを受け取る出力ポインタ。 |
| ppContainer | IDxcBlob** | out | PDB内に格納されたコンテナを格納したBlobを受け取る出力ポインタ。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IDxcUtils "{4605C4CB-2019-492A-ADA4-65F20BB7D67F}" #usecom global IDxcUtils IID_IDxcUtils "{}" #comfunc global IDxcUtils_CreateBlobFromBlob 3 sptr,int,int,sptr #comfunc global IDxcUtils_CreateBlobFromPinned 4 sptr,int,int,sptr #comfunc global IDxcUtils_MoveToBlob 5 sptr,sptr,int,int,sptr #comfunc global IDxcUtils_CreateBlob 6 sptr,int,int,sptr #comfunc global IDxcUtils_LoadFile 7 wstr,var,sptr #comfunc global IDxcUtils_CreateReadOnlyStreamFromBlob 8 sptr,sptr #comfunc global IDxcUtils_CreateDefaultIncludeHandler 9 sptr #comfunc global IDxcUtils_GetBlobAsUtf8 10 sptr,sptr #comfunc global IDxcUtils_GetBlobAsWide 11 sptr,sptr #comfunc global IDxcUtils_GetDxilContainerPart 12 var,int,sptr,var #comfunc global IDxcUtils_CreateReflection 13 var,var,sptr #comfunc global IDxcUtils_BuildArguments 14 wstr,wstr,wstr,var,int,var,int,sptr #comfunc global IDxcUtils_GetPDBContents 15 sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDxcUtils "{4605C4CB-2019-492A-ADA4-65F20BB7D67F}" #usecom global IDxcUtils IID_IDxcUtils "{}" #comfunc global IDxcUtils_CreateBlobFromBlob 3 sptr,int,int,sptr #comfunc global IDxcUtils_CreateBlobFromPinned 4 sptr,int,int,sptr #comfunc global IDxcUtils_MoveToBlob 5 sptr,sptr,int,int,sptr #comfunc global IDxcUtils_CreateBlob 6 sptr,int,int,sptr #comfunc global IDxcUtils_LoadFile 7 wstr,sptr,sptr #comfunc global IDxcUtils_CreateReadOnlyStreamFromBlob 8 sptr,sptr #comfunc global IDxcUtils_CreateDefaultIncludeHandler 9 sptr #comfunc global IDxcUtils_GetBlobAsUtf8 10 sptr,sptr #comfunc global IDxcUtils_GetBlobAsWide 11 sptr,sptr #comfunc global IDxcUtils_GetDxilContainerPart 12 sptr,int,sptr,sptr #comfunc global IDxcUtils_CreateReflection 13 sptr,sptr,sptr #comfunc global IDxcUtils_BuildArguments 14 wstr,wstr,wstr,sptr,int,sptr,int,sptr #comfunc global IDxcUtils_GetPDBContents 15 sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。