2011-02-03 8 views
0

Windows APIからVerQueryValueへのJNAインターフェイスを実装しようとしています。LPVOIDバッファへのJNAインターフェイスを実装するにはどうすればよいですか?

それは、次のネイティブのシグネチャがあります。

BOOL WINAPI VerQueryValue(
    __in LPCVOID pBlock, 
    __in LPCTSTR lpSubBlock, 
    __out LPVOID *lplpBuffer, 
    __out PUINT puLen 
); 

は、私は正常の3つのパラメータに変換しているように見える(1 - ポインター、2 - WSTRING、4 - IntByReference)を、私は第三とこだわっています。

正しい翻訳とは何ですか?そのバッファに保存されている情報にどうやってアクセスできますか?

答えて

3

私は正しいマッピングが可能になると言う傾向があるでしょう:私は以下のコードVerQueryValueを使用したことがないので

int VerQueryValue(Pointer pBlock, String lpSubBlock, PointerByReference lplpBuffer, IntByReference puLen); 

結果の使用方法についての推測です:

完全に働いた
//other parameters & method calls ... 
//empty constructor : VerQueryValue will valuate the pointed value. 
PointerByReference lplpBuffer = new PointerByReference(); 
//empty constructor : VerQueryValue will valuate the pointed value. 
IntByReference puLen = new IntByReference(); 
int rc = YourClassName.VerQueryValue(pBlock,lpSubBlock,lplpBuffer,puLen); 
//Check rc & co 
//use the result 
byte[] resBytes = lplpBuffer.getValue().getByteArray(0,puLen.getValue()); 
//if it's a String 
String resString = new String(resBytes, ENCODING); 
+0

、ありがとう! – etheros

+0

あなたはようこそ – Cerber

関連する問題