2012-04-30 3 views
0

JNAでDisk_Geometryを取得する方法についてアドバイスをいただけますか? これは、C++で、CreateFile()を使用してディスクのハンドルを作成し、Deviceiocontrolを使用してそれを照会し、DISK_GEOMETRYを使用して異なるディスク属性を取得することで、これがまっすぐであることを知っています。 JNAを使ってJavaで同じことをやりたいのですが、DISK_GEOMETRY型がKernel32にありません。JNAを使用してWindowsでディスクジオメトリを決定

助けてください。

答えて

-1

JNAでこれを行う方法はわかりませんが、代わりにWMIを使用するように提案したいと思います。 WMIクラス[Win32_DiskDrive][1]はあなたのための良い候補のようです。それには、あなたが必要とするものが含まれています。今問題は「JavaからWMIを呼び出す方法」です。方法はいくつかあります。最も簡単なのは、JScriptまたはVBSを使用してスクリプトを作成し、ProcessBuilderを使用してjavaから呼び出す方法です。この方法は簡単で、ネイティブコードや外部ライブラリを扱う必要はありませんが、プロセス間通信が使用されるため、少し遅くなる可能性があります。

他の方法は、利用可能なjava-to-comパッケージの1つを使用することです。たとえば、JaWin、JInterop、JIntegraなどです。

1

JNAで提供されているインターフェース定義を簡単に拡張して、「欠落している」ものを追加することができます。あなたの目的に合った関数、構造体、定数定義を追加できます。

public interface MyKernel32 extends Kernel32 { 
    public class DISK_GEOMETRY extends Structure { 
     // Fill in specifics of the structure here, following the type mapping rules 
     // in the JNA documentation, or use [JNAerator][1] to auto-generate the mapping. 
    } 
} 
+0

ご協力いただきありがとうございます。私は両方のオプションを検討しており、すぐに更新されます。 – stdapsy

関連する問題