================================================================================
  C# 版 HSPSMART ラッパクラス
================================================================================

【説明】
  hspsmart.dll / hspsmart64.dll を C# から呼び出すためのラッパクラスです。
  DLL は HSP 版と共用できます。HSP 版フォルダから hspsmart.dll / hspsmart64.dll
  をコピーし、CHspSmartDotNet.cs を自分のプロジェクトに追加してください。

【対応バージョン】
  HSPSMART.DLL Ver 1.12 (CrystalDiskInfo 9.8.0 ベース)
  .NET Framework 4.8 以降推奨

【使い方 最小例】
  using moe.hsp.hspsmart.dotnet;

  if (!CHspSmartDotNet.IsCurrentUserLocalAdministrator())
  {
      Console.Error.WriteLine("管理者権限で起動してください");
      return;
  }

  using (var smart = new CHspSmartDotNet())
  {
      smart.SetUSB1394(CHspSmartDotNet.FLAG_USB.ALL);
      smart.DiskScan();
      int count = smart.GetCount();
      for (int i = 0; i < count; i++)
      {
          string model = smart.GetInfoString(i, CHspSmartDotNet.INFO.MODEL, out _);
          int temp     = smart.GetInfoInt(i, CHspSmartDotNet.INFO.TEMPERATURE, out _);
          int life     = smart.GetInfoInt(i, CHspSmartDotNet.INFO.LIFE, out _);
          Console.WriteLine("Disk {0}: {1}  {2}℃  Life={3}", i, model, temp, life);
      }
  }

【動作サンプル】
  hspsmart_dotnet プロジェクトがそのまま動作サンプルになっています。
  コンソールアプリで、検出した全ディスクの SMART 情報を列挙します。

  > hspsmart_dotnet.exe          # 全ディスクの概要
  > hspsmart_dotnet.exe 0        # 0 番ディスクの詳細
  > hspsmart_dotnet.exe --all    # 全ディスクの詳細

【注意】
  必ず管理者権限で実行してください。SMART アクセスには特権が必要です。
  AnyCPU / x86 / x64 いずれでも動作します。CHspSmartDotNet クラスが
  プロセスのビット数に応じて hspsmart.dll / hspsmart64.dll を使い分けます。

【重要: supportedOS マニフェストについて】
  自作 EXE のマニフェストに Windows 10/11 の supportedOS GUID を
  宣言しておかないと、新しい NVMe SSD (Samsung 980 PRO 等) で
  SMART 値が正しく取れず Life=0% / 状態が「注意」表示になります。

  原因: 宣言が無いと VerifyVersionInfo が Windows 8 (6.2) までしか
  返さなくなり、本 DLL 内の Windows 10 以降パス (標準 NVMe アクセス)
  がスキップされ、旧式ベンダ専用プロトコルにフォールバックするため。

  対処: csproj に以下を追加し、app.manifest に compatibility を入れます。

    <PropertyGroup>
      <ApplicationManifest>app.manifest</ApplicationManifest>
    </PropertyGroup>

  app.manifest 例 (本パッケージの hspsmart_dotnet/app.manifest がそのまま雛形):

    <?xml version="1.0" encoding="utf-8"?>
    <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity version="1.0.0.0" name="YourApp.app"/>
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
          <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
          <!-- Windows 10 / 11。他 (Vista/7/8/8.1) の GUID も併記推奨 -->
        </application>
      </compatibility>
    </assembly>
================================================================================
