WSHマクロ・プラグインからDLL関数を実行できるようにするIfObjを追加します。 Editorではなく、NativeCallというオブジェクト名に関数を定義しました。 実装コードは2つあり、 ・独自定義(x86では制限なし、x64ではfloat,doubleの引数が使えない) ・libffiを用いた実装、コンパイルにlibffiのlib/headerが必要 となっています。
Libffiのコンパイル方法等についてはパッチのlibffi.txtを参照のこと。
LoadLibrary 第二引数 オプション追加 GetPtrDllValue,GetPtrDllHandle 追加 GetProcAndDefPtr,FreeProc 追加 CopyMemory,MoveMemory,SwapMemory,SetMemory,GetMemorySize 追加 SetByteMemory 戻り値型 VC_BOLに修正 SetDobuleMemory => SetDoubleMemory GetPtrFromIntPtr => GetPtrFromUIntPtr / VC_UIPに変更 GetPtrFromPtr, SetPtrIndex 追加 IsInvalidHandlePtr 追加 GetStringArch, GetSizeOfIntPtr 追加 FreeLibraryで解放済みLibNoをFreeLibraryした場合例外にするように変更 独自実装の場合、GetProcAndDefで引数の最大数15個(x86ではdoubleは7個)をチェックして例外にするように変更 CallでPtrObjの引数が正しく渡せていなかったバグを修正 Callで引数タイプMemory,PtrObjのとき-1でNULL,-2でINVALID_HANDLE_VALUEを渡すように変更 CallでString系の戻り値のときNULLだった場合に例外にするように修正 CallでString系かPtrObjの戻り値で正しい時も例外が発生していたのを修正 AllocMemoryで確保時に0初期化するように修正 AllocBinaryMemoryでbinDataにU+100以上があったとき-1を返していたのを例外にするように修正 Alloc*Memoryでエラー時のmemのdelete忘れを修正 SetStringMemoryで0文字書き込みのときindexが範囲外のチェックができていなかったのを修正 Get(String|StringCode)(Memory|Ptr)の引数indexが実装されていなかったのを修正 GetBinaryPtrのindexマイナスで例外発生していたのを修正 GetBinary(Memory|Ptr)でlenが0を指定の時メモリーサイズ読み込みになっていたのを0バイト読み込みに修正 GetBinaryMemoryでlenが-2以下のとき例外にして、-1のときバッファ長にするように修正 GetBinaryPtrでlenが-1以下のとき例外にするように修正 GetBinary(Memory|Ptr)の戻り値が、バイト列をそのままメモリコピーになっていたのを修正 indexがとても大きい時のMemory範囲チェックで整数オーバーフローしていたバグを修正 CMemoryでUTF-32のNUL終端を扱うように GetNativePtrSizeでpMemがNULLのときアクセス違反になるバグを修正 メモリー確保失敗に対する処理の強化 AddVectorDataのFreeIndex再設定を修正
API説明書 v0_1
テスト用スクリプト・バイナリ・パッチ等一式
Log in to post a comment.
LoadLibrary 第二引数 オプション追加
GetPtrDllValue,GetPtrDllHandle 追加
GetProcAndDefPtr,FreeProc 追加
CopyMemory,MoveMemory,SwapMemory,SetMemory,GetMemorySize 追加
SetByteMemory 戻り値型 VC_BOLに修正
SetDobuleMemory => SetDoubleMemory
GetPtrFromIntPtr => GetPtrFromUIntPtr / VC_UIPに変更
GetPtrFromPtr, SetPtrIndex 追加
IsInvalidHandlePtr 追加
GetStringArch, GetSizeOfIntPtr 追加
FreeLibraryで解放済みLibNoをFreeLibraryした場合例外にするように変更
独自実装の場合、GetProcAndDefで引数の最大数15個(x86ではdoubleは7個)をチェックして例外にするように変更
CallでPtrObjの引数が正しく渡せていなかったバグを修正
Callで引数タイプMemory,PtrObjのとき-1でNULL,-2でINVALID_HANDLE_VALUEを渡すように変更
CallでString系の戻り値のときNULLだった場合に例外にするように修正
CallでString系かPtrObjの戻り値で正しい時も例外が発生していたのを修正
AllocMemoryで確保時に0初期化するように修正
AllocBinaryMemoryでbinDataにU+100以上があったとき-1を返していたのを例外にするように修正
Alloc*Memoryでエラー時のmemのdelete忘れを修正
SetStringMemoryで0文字書き込みのときindexが範囲外のチェックができていなかったのを修正
Get(String|StringCode)(Memory|Ptr)の引数indexが実装されていなかったのを修正
GetBinaryPtrのindexマイナスで例外発生していたのを修正
GetBinary(Memory|Ptr)でlenが0を指定の時メモリーサイズ読み込みになっていたのを0バイト読み込みに修正
GetBinaryMemoryでlenが-2以下のとき例外にして、-1のときバッファ長にするように修正
GetBinaryPtrでlenが-1以下のとき例外にするように修正
GetBinary(Memory|Ptr)の戻り値が、バイト列をそのままメモリコピーになっていたのを修正
indexがとても大きい時のMemory範囲チェックで整数オーバーフローしていたバグを修正
CMemoryでUTF-32のNUL終端を扱うように
GetNativePtrSizeでpMemがNULLのときアクセス違反になるバグを修正
メモリー確保失敗に対する処理の強化
AddVectorDataのFreeIndex再設定を修正
API説明書 v0_1
テスト用スクリプト・バイナリ・パッチ等一式