総合掲示板(アップロードファイル合計最大1MB)/添付ファイルはプレビュー時に消えるため、再設定をお願いします。
|
やさいさん
- 23/2/14(火) 13:12 -
|
▼ひよひよさん:
>▼やさいさんさん:
>>8.18.0 Beta1でDLLの読み取りに失敗する件について、
>>Windows10(22H2)環境では発生しませんでしたが、
>>WindowsServer2022(21H1)では2台中2台で発生しましたことを
>>追加で報告します。
>>
>>※素のWindowsServer2022(21H1)で発生しました。
>ご確認ありがとうございます。
>ちょっと原因がわからないので、Windows Server 2022環境を構築してテストしてみます。
githubにBeta1のソースがありましたので調査したところ、本件の原因の
特定ができました。
JMicronUsbRaid64.dll が 「Microsoft Visual C++ 再頒布可能パッケージ」に含まれる
VCRUNTIME140.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
に依存しており、これらがインストールされていない環境では
AtaSmart.cppのCAtaSmart::Init()で行われる
InitializeDll(&hModule);が失敗します。
Beta1ではここが成功する前提で
count = GetControllerCount();
が実行されてしまい例外発生となっていました。
Beta1の実行環境では、
・「Microsoft Visual C++ 再頒布可能パッケージ」がインストールされていない
または、
・JMicronUsbRaid64.dllがない
の時にCrystalDiskInfoが起動せずに例外が発生するはずです。
Beta2以降はDLL対応をしていませんので影響ありませんが、
気になったのと環境があったため調査した次第です。
DLLの依存関係調査はこちらのサイトを参考とさせて
いただきました。
https://tech.mlexp.net/2011/01/loadlibrary/
よろしくお願いいたします。