================================================================================
【名    称】  HSPSMART.dll Version 1.12 (based CrystalDiskInfo 9.8.0)
【登 録 名】  hspsmart_112.zip hspsmart_112.7z
【製作者名】  イノビア
【動作環境】  Windows 10, 11
【ランタイム】HSP 3.0 以降
【公 開 日】  2013.05.28
【更 新 日】  2026.04.17
【開発環境】  Microsoft Visual Studio 2022
================================================================================
【種　　別】  フリーソフト
【転 載 等】  改造を含め自由にどうぞ。ただし、CrystalDiskInfo のライセンスに従って
              ください。
              https://crystalmark.info/ja/software/crystaldiskinfo/crystaldiskinfo-license/
              本 DLL は引き続き MIT ライセンスで提供します。
================================================================================
 サポート URL : https://www.hinekure.net/
             : https://hsp.moe/
             : https://twitter.com/hk1v/
================================================================================
 本 DLL についてのお問い合わせはイノビアまでお願いします。
 CrystalDiskInfo 本体でも同様の不具合が発生しているなど、明らかに本家側の問題と
 思われる場合を除き、hiyohiyo 氏には本 DLL に関する問い合わせをしないでください。
================================================================================
 本 DLL を使用したことによる一切の損害に対し、作者は責任を負いません。
 ご理解いただいた上でご使用ください。
================================================================================

 * 概要 - information

  本 DLL は HSP 3.0 以降でディスクの情報や S.M.A.R.T. 情報を取得できます。
  HSP 3.5 beta3 以降であれば、64bit ネイティブでも使用できます。

  hiyohiyo 氏の CrystalDiskInfo のソースコードを利用しています。
  https://crystalmark.info/ja/software/crystaldiskinfo/
  本 DLL のソースコードはリポジトリの hspsmart フォルダに格納しています。
  (従来の「src フォルダ」は廃止しました)

  本 DLL を使用したソフトを配布する際は、Readme などに hiyohiyo 氏の著作権表示や、
  CrystalDiskInfo のソースコードを利用していることを明記してください。

    COPYRIGHT.txt               : CrystalDiskInfo 本体の著作権表示 (MIT License)
    COPYRIGHT-ja.txt            : 同上 (日本語訳)
    NVMeInterpreter-LICENSE.txt : NVMeInterpreter モジュール (c) 2016 Minkyu Kim (MIT)
    SlotSpeedGetter-LICENSE.txt : SlotSpeedGetter モジュール (c) 2016 Minkyu Kim (MIT)

  なお、CrystalDiskInfo 本家にはデジタル署名が付与されていますが、本 DLL には
  付与しておりませんので、予めご理解の上でご使用ください。

 * インストール - install

  hspsmart.dll、hspsmart64.dll を HSP3 がインストールされているフォルダにコピー、
  hspsmart.as、hspsmart64.as を HSP3 の common フォルダ内にコピー、
  hspsmart.hs を HSP3 の hsphelp フォルダ内にコピーしてください。

 * 64bit ランタイム - 64bit runtime

  64bit 版の HSP ランタイムは HSP 3.5 beta3 以降に同梱されています。
  64bit で使用する場合は "hspsmart.as" の代わりに "hspsmart64.as" を使用してください。

 * 使い方 - how to use

  スクリプトに #include "hspsmart.as" を記述すれば利用可能になります。
  64bit で使用する場合は "hspsmart64.as" を使用してください。
  サンプルも同梱していますのでご自由にお試しください。

 * 命令仕様 - guide

  同梱している hspsmart.hs ファイルを HDL に読み込ませて命令マニュアルをご覧ください。

 * 重要: supportedOS マニフェストについて - IMPORTANT for Windows 10/11

  Windows 10/11 で NVMe の SMART 情報を正しく取得するには、
  本 DLL を呼び出す EXE 側のマニフェストに「Windows 10/11 互換」を
  明示的に宣言しておく必要があります。

  宣言が無い場合、Windows の VerifyVersionInfo API が
  Windows 8 (バージョン 6.2) までしか値を返さなくなるため、
  本 DLL 内部の OS 判定で「Windows 10 以降」パス
  (IOCTL_STORAGE_QUERY_PROPERTY による標準的な NVMe アクセス) が
  スキップされ、代替ルート (Samsung 等の旧式ベンダ専用プロトコル) に
  フォールバックしてしまいます。

  その結果、特に Samsung 980 PRO 等の新しい NVMe SSD で
  「Percentage Used が 255 になり Life が 0%、正常なのに注意表示される」
  といった症状が出ます。

  対処法: EXE のマニフェストに以下の compatibility セクションを入れてください。

    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
        <!-- Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
        <!-- Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
        <!-- Windows 8 -->
        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
        <!-- Windows 8.1 -->
        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
        <!-- Windows 10 / 11 -->
        <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
      </application>
    </compatibility>

  HSP の場合:
    HSP のランタイム (hsp3.exe 等) 自体に同等の宣言が入っていれば
    追加作業は不要ですが、入っていないまたは古い HSP をお使いの場合は、
    mt.exe や Resource Hacker でお手元の EXE にマニフェストを
    埋め込むか、付属サンプル (hspsmart_dotnet) の app.manifest を
    参考にしてください。

  C# で自作 EXE を作る場合:
    csproj の <ApplicationManifest>app.manifest</ApplicationManifest> を
    指定して、上記 compatibility を含むマニフェストを同梱してください。
    本パッケージの hspsmart_dotnet/app.manifest がそのまま雛形になります。

 * オプション - optional bridge support DLL

  以下の USB-RAID ブリッジや AMD RC2 NVMe 経由で SMART 取得をしたい場合、
  CrystalDiskInfo 本体に同梱されている CdiResource/dll フォルダを
  hspsmart.dll と同じ階層にコピーしてください。
  DLL が存在しない場合、それらの経路による SMART 取得のみ静かに無効化され、
  通常の SATA/NVMe/一般 USB ディスクの SMART 取得には影響しません。

    JMicron JMB39X / JMS56X / JMS586 系 USB-RAID エンクロージャ
    AMD RC2 NVMe

  各 DLL のライセンス条件 (特に AMD_RC2t7 は再配布に条件あり) は
  CrystalDiskInfo 本体の License フォルダをご確認ください。

 * 更新履歴 - history

  1.00 -> 初版リリース
  1.01 -> CrystalDiskInfo 6.0.1 対応
  1.02 -> CrystalDiskInfo 6.0.4 対応
  1.03 -> CrystalDiskInfo 6.1.8 対応
  1.04 -> CrystalDiskInfo 6.1.12 対応
  1.05 -> CrystalDiskInfo 6.1.14 対応 / 正式リリース
  1.06 -> CrystalDiskInfo 6.2.1 対応
  1.07 -> CrystalDiskInfo 6.3.2 対応 / 64bit 版 DLL 生成
  1.08 -> CrystalDiskInfo 6.7.5 対応
  1.09 -> CrystalDiskInfo 7.0.0 対応
  1.10 -> CrystalDiskInfo 7.1.1 対応 / C# サンプル追加
  1.11 -> CrystalDiskInfo 8.2.3 対応
  1.12 -> CrystalDiskInfo 9.8.0 対応
         ・開発環境を Visual Studio 2022 (v143 / C++17) に更新
         ・COMMAND_TYPE 値シフト (以前と同様 .as 更新 + HSP EXE 再コンパイル推奨)
         ・CDI 9 で FlagUsbLogitec1/2 が単一フラグに再統合 (両ビット受付)
         ・FLAG_USB_* 追加 (ASM1352R / REALTEK9220DP / JMS56X / JMB39X /
           JMS586_20 / JMS586_40 / AMD_RC2 / INTEL_VROC)
         ・INFO_* 追加 (PhysicalSectorSize, IsVolatileWriteCachePresent,
           IsNvmeThresholdSupported, IsNvmeThermalManagementSupported,
           IsStreamingSupported, IsGplSupported, NandWritesUnit,
           TemperatureNVMe, FlagLifeNoReport, FlagLifeRawValue,
           FlagLifeRawValueIncrement)
         ・JMicron USB RAID / AMD RC2 検出サポート (ベンダ DLL は別途要)
         ・CHECKDLL_VALUE 6 → 7
================================================================================
