Dump-X(ダンプ・エックス)

Dump-X.ps1 使用サンプル

Param( [System.IO.FileInfo] $File ) trap { break } #------------------------------------------------------------ # ライブラリ Dump-X の読み込み # ライブラリ Dump-X の格納パス # (自身と同じフォルダに Dump-X を格納) $szPath = [System.IO.Path]::GetDirectoryName( $MyInvocation.MyCommand.Source ) # ライブラリ Dump-X の読み込み . ($szPath + '\Dump-X.ps1') #------------------------------------------------------------ # ファイル構造を定義 # # C/C++ の構造体で表すと次のような構造を定義している。 # # struct vertex # { # BYTE X; # BYTE Y; # BYTE Z; # BYTE reserved; # DWORD color[2]; # FLOAT tx; # FLOAT ty; # }; # # struct square # { # vertex Square[4]; # }; # # struct background # { # square BG1; # square BG2; # }; # # # 各要素の意味 # # flag # 次の値のいずれかを指定可能 # $F_NONE は何もしない # $F_NOSEL は書き換え不許可 # name # 要素名 # size # この要素のサイズ。単位はバイトで 0 以上指定可能 # loop を参照 # loop # 繰り返しの回数。size/loop の値によって次のようになる # size loop subMember # 1 0 無視 1 バイトの要素 # 1 2 無視 1 バイトの要素が 2 回続く # 0 1 必須 subMember に指定した要素が 1 回続く # 0 0 無視 区切り(値は保持しない) # ※上記表の size と loop の値は、組み合わせとして最小値を示している # subMember # サブ要素 # loop を参照 # fnDisp # 表示方法。省略すると 16 進数で表示 # 省略しないときは次の値を指定可能 # $DISP_I8 1 バイトの符号あり整数 # $DISP_I16 2 バイトの符号あり整数 # $DISP_I32 4 バイトの符号あり整数 # $DISP_I64 8 バイトの符号あり整数 # $DISP_U8 1 バイトの符号なし整数 # $DISP_U16 2 バイトの符号なし整数 # $DISP_U32 4 バイトの符号なし整数 # $DISP_U64 8 バイトの符号なし整数 # $DISP_F32 4 バイトの浮動小数点数 # $DISP_F64 8 バイトの浮動小数点数 # # 次で定義する $square で使用する $vertex = @( @{ flag=$F_NONE ; name='X' ; size=1; loop=0; subMember=$Null } @{ flag=$F_NONE ; name='Y' ; size=1; loop=0; subMember=$Null } @{ flag=$F_NONE ; name='Z' ; size=1; loop=0; subMember=$Null } @{ flag=$F_NOSEL; name='reserved' ; size=1; loop=0; subMember=$Null } @{ flag=$F_NONE ; name='color' ; size=4; loop=2; subMember=$Null } @{ flag=$F_NONE ; name='tx' ; size=4; loop=0; subMember=$Null; fnDisp=$DISP_F32 } @{ flag=$F_NONE ; name='ty' ; size=4; loop=0; subMember=$Null; fnDisp=$DISP_F32 } ) # 次で定義する $background で使用する $square = @( @{ flag=$F_NONE ; name= 'Square' ; size=0; loop=4; subMember=$vertex } ) # 背景 $background = @( @{ flag=$F_NONE ; name='BG-1' ; size=0; loop=0; subMember=$square } @{ flag=$F_NONE ; name='BG-2' ; size=0; loop=0; subMember=$square } ) #------------------------------------------------------------ # 主処理 #------------------------------------------------------------ Dump-X-Core $background $File

Dump-X.ps1 使用サンプルの実行

次のファイルを D:\tmp に保存して実行したサンプル
PowerShell を起動した直後
実行直前
実行結果