Win32 API 日本語リファレンス
ホームGraphics.Direct3D.Dxc › IDxcUtils

IDxcUtils

COM
IID4605c4cb-2019-492a-ada4-65f20bb7d67f継承元IUnknown自前メソッド開始 vtbl3

メソッド 13

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateBlobFromBlob(IDxcBlob* pBlob, DWORD offset, DWORD length, IDxcBlob** ppResult)
pBlobIDxcBlob*in元データとなる既存Blobを指すポインタ。
offsetDWORDin切り出しを開始するバイトオフセットを指定する。
lengthDWORDin切り出すバイト長を指定する。
ppResultIDxcBlob**out生成された部分Blobを受け取る出力ポインタ。
vtbl 4 HRESULT CreateBlobFromPinned(void* pData, DWORD size, DXC_CP codePage, IDxcBlobEncoding** ppBlobEncoding)
pDatavoid*inピン留め済みのデータを指すポインタ。寿命は呼び出し側が保証する。
sizeDWORDinデータのバイト長を指定する。
codePageDXC_CPinデータのコードページ番号を指定する。バイナリならDXC_CP_ACPなど。
ppBlobEncodingIDxcBlobEncoding**out生成されたエンコード付きBlobを受け取る出力ポインタ。
vtbl 5 HRESULT MoveToBlob(void* pData, IMalloc* pIMalloc, DWORD size, DXC_CP codePage, IDxcBlobEncoding** ppBlobEncoding)
pDatavoid*inBlobへ所有権を移すデータを指すポインタ。
pIMallocIMalloc*inデータの解放に用いるメモリアロケータを指すポインタ。
sizeDWORDinデータのバイト長を指定する。
codePageDXC_CPinデータのコードページ番号を指定する。
ppBlobEncodingIDxcBlobEncoding**out生成されたエンコード付きBlobを受け取る出力ポインタ。
vtbl 6 HRESULT CreateBlob(void* pData, DWORD size, DXC_CP codePage, IDxcBlobEncoding** ppBlobEncoding)
pDatavoid*inコピー元のデータを指すポインタ。
sizeDWORDinデータのバイト長を指定する。
codePageDXC_CPinデータのコードページ番号を指定する。
ppBlobEncodingIDxcBlobEncoding**out内容を複製したエンコード付きBlobを受け取る出力ポインタ。
vtbl 7 HRESULT LoadFile(LPWSTR pFileName, DXC_CP* pCodePage, IDxcBlobEncoding** ppBlobEncoding)
pFileNameLPWSTRin読み込むファイルのパス(UTF-16)を指すポインタ。
pCodePageDXC_CP*inoptionalファイル内容のコードページを指すポインタ。NULL可で自動判定。
ppBlobEncodingIDxcBlobEncoding**outファイル内容を格納したエンコード付きBlobを受け取る出力ポインタ。
vtbl 8 HRESULT CreateReadOnlyStreamFromBlob(IDxcBlob* pBlob, IStream** ppStream)
pBlobIDxcBlob*inストリーム化する元Blobを指すポインタ。
ppStreamIStream**out生成された読み取り専用ストリームを受け取る出力ポインタ。
vtbl 9 HRESULT CreateDefaultIncludeHandler(IDxcIncludeHandler** ppResult)
ppResultIDxcIncludeHandler**out既定のファイルシステムベースのインクルードハンドラを受け取る出力ポインタ。
vtbl 10 HRESULT GetBlobAsUtf8(IDxcBlob* pBlob, IDxcBlobUtf8** ppBlobEncoding)
pBlobIDxcBlob*in変換元のBlobを指すポインタ。
ppBlobEncodingIDxcBlobUtf8**outUTF-8へ変換した内容を保持するBlobを受け取る出力ポインタ。
vtbl 11 HRESULT GetBlobAsWide(IDxcBlob* pBlob, IDxcBlobUtf16** ppBlobEncoding)
pBlobIDxcBlob*in変換元のBlobを指すポインタ。
ppBlobEncodingIDxcBlobUtf16**outUTF-16へ変換した内容を保持するBlobを受け取る出力ポインタ。
vtbl 12 HRESULT GetDxilContainerPart(DxcBuffer* pShader, DWORD DxcPart, void** ppPartData, DWORD* pPartSizeInBytes)
pShaderDxcBuffer*in対象となるDXILコンテナを記述するバッファを指すポインタ。
DxcPartDWORDin取得するパートを示す4文字コード(FourCC)を指定する。
ppPartDatavoid**out見つかったパートのデータ先頭を受け取る出力ポインタ。
pPartSizeInBytesDWORD*out見つかったパートのバイトサイズを受け取る出力先。
vtbl 13 HRESULT CreateReflection(DxcBuffer* pData, GUID* iid, void** ppvReflection)
pDataDxcBuffer*inリフレクション元となるデータを記述するバッファを指すポインタ。
iidGUID*in要求するリフレクションインタフェースのIIDを指すポインタ。
ppvReflectionvoid**inout生成されたリフレクションオブジェクトを受け取る出力ポインタ。
vtbl 14 HRESULT BuildArguments(LPWSTR pSourceName, LPWSTR pEntryPoint, LPWSTR pTargetProfile, LPWSTR* pArguments, DWORD argCount, DxcDefine* pDefines, DWORD defineCount, IDxcCompilerArgs** ppArgs)
pSourceNameLPWSTRinoptional診断表示用のソース名(UTF-16)を指すポインタ。NULL可。
pEntryPointLPWSTRinoptionalシェーダのエントリポイント関数名(UTF-16)を指すポインタ。
pTargetProfileLPWSTRinターゲットプロファイルを表す文字列を指すポインタ。
pArgumentsLPWSTR*inoptional追加の引数の配列を指すポインタ。NULL可。
argCountDWORDinpArguments配列の要素数を指定する。
pDefinesDxcDefine*inプリプロセッサ定義の配列を指すポインタ。NULL可。
defineCountDWORDinpDefines配列の要素数を指定する。
ppArgsIDxcCompilerArgs**out構築されたコンパイラ引数オブジェクトを受け取る出力ポインタ。
vtbl 15 HRESULT GetPDBContents(IDxcBlob* pPDBBlob, IDxcBlob** ppHash, IDxcBlob** ppContainer)
pPDBBlobIDxcBlob*in解析対象のPDB Blobを指すポインタ。
ppHashIDxcBlob**outPDBに含まれるハッシュ情報を格納したBlobを受け取る出力ポインタ。
ppContainerIDxcBlob**outPDB内に格納されたコンテナを格納した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 指定が可能。