>ANTARESさん
構造体の記述が一部間違ってますね。
誤 extra_count=VA_MAX_STREAM_COUNT*512+extra
正 extra_count=EX_MAX_STREAM_COUNT*512+extra
バッファは確保できているのでエラーにはなりませんが。
それを踏まえた上で、FILE_INFO構造体から自力で情報を取り出すサンプル。
#uselib "Sinku.dll"
#func SetPath "SetPath" str
#func GetFileInfoAuto "GetFileInfoAuto" var
#const VA_MAX_STREAM_COUNT 10
#const EX_MAX_STREAM_COUNT 5
#const filename 0
#const type filename + 512
#const container type + 4
#const verror container + 32
#const video verror + 512
#const video_count video + VA_MAX_STREAM_COUNT*512
#const audio video_count + 4
#const audio_count audio + VA_MAX_STREAM_COUNT*512
#const extra audio_count + 4
#const extra_count extra + EX_MAX_STREAM_COUNT*512
#const playtime extra_count + 4
#const size playtime + 8
#const sizeFILE_INFO size + 8
SetPath dir_cur + "\\"
button gosub "読み込み", *load
stop
*load
dialog "*",16
if stat = 0 : return
dim FILE_INFO, sizeFILE_INFO/4
poke FILE_INFO, 0, refstr ; poke命令でFILE_INFO構造体にファイル名を格納
GetFileInfoAuto FILE_INFO
strResult = ""
strResult += "ファイル種別 : " + FILE_INFO(type/4) + "\n"
getstr buf, FILE_INFO, container, , 32
strResult += "コンテナ名 : " + buf + "\n"
getstr buf, FILE_INFO, verror, , 512
strResult += "エラー名 : " + buf + "\n"
buf = ""
repeat FILE_INFO(video_count/4)
index = video + cnt*512
getstr buf2, FILE_INFO, index, , 512 ; 512バイト毎に情報が格納されている
buf += "\t" + buf2 + "\n"
loop
strResult += "映像の詳細[" + FILE_INFO(video_count/4) + "]\n" + buf
buf = ""
repeat FILE_INFO(audio_count/4)
index = audio + cnt*512
getstr buf2, FILE_INFO, index, , 512
buf += "\t" + buf2 + "\n"
loop
strResult += "音声の詳細[" + FILE_INFO(audio_count/4) + "]\n" + buf
buf = ""
repeat FILE_INFO(extra_count/4)
index = extra + cnt*512
getstr buf2, FILE_INFO, index, , 512
buf += "\t" + buf2 + "\n"
loop
strResult += "付属情報[" + FILE_INFO(extra_count/4) + "]\n" + buf
; dupptr命令でFILE_INFO.3468とFILE_INFO.3469をdouble型変数に割り当て
dupptr buf, varptr(FILE_INFO(playtime/4)), 8, 3
strResult += "再生時間 : " + buf + " sec\n"
; dupptr命令でFILE_INFO.3470とFILE_INFO.3471をdouble型変数に割り当て
; その後、strf関数で符号なし64bit整数に書式変換
dupptr buf, varptr(FILE_INFO(size/4)), 8, 3
strResult += "ファイルサイズ : " + strf("%I64u", buf) + " bytes\n"
color 255, 255, 255 : boxf : color 0, 0, 0
pos 0, 24
mes strResult
return