2012-10-04 43 views
2

我想我可以使用C API從用戶ID文件中獲取公鑰。發現功能,並認爲我理解它的大部分。但我不知道如何從指向我想要的地址讀取數據。從C API調用讀取結果

Declare Function W32_OSLockObject Lib "nnotes.dll" Alias "OSLockObject" (Byval handle As Long) As Long 
Declare Function W32_OSUnlockObject Lib "nnotes.dll" Alias "OSUnlockObject" (Byval handle As Long) As Long 

Declare Function SECKFMGetUserName Lib "nnotes" (Byval strReturnUserName As String) As Integer 
Declare Function SECKFMGetPublicKey Lib "nnotes.dll" (Byval strUserName As String, Byval intFunction As Integer, Byval intFlags As Integer, handle As Long) As Integer 


lret = SECKFMGetUserName(hUserName) 
lret = SECKFMGetPublicKey(hUserName, 0, 0, hPublicKey) 

aPublicKey = W32_OSLockObject(hPublicKey) 

現在是什麼?坐着的鴨子正在等待我到地址[aPublicKey]。已經嘗試了幾種方法從該地址獲取字符串,但我一遍又一遍地重複。

它應該很簡單,但我沒有更多的線索可以遵循。

我知道有關於C API的購買信息,但是我需要一本書來從已知地址獲取字符串嗎?

小心成爲我的C API英雄?

+1

爲什麼你需要從ID文件中獲取公鑰?它是公開的。您可以將其從Domino目錄中取出。 –

回答

1

假設你指的是「LotusScript to C API編程指南」,我有這本書。我強烈推薦它。關於內存處理有一個不錯的篇章。

嘗試宣告OSLockObject返回一個字符串LMBCS,像這樣:

Declare Function W32_OSLockObjectStr Lib "nnotes.dll" Alias "OSLockObject" (Byval handle As Long) As LMBCS String 

如果SECKFMGetPublicKey將返回包含空值終止字符串緩衝區,它應該工作。如果不是的話,那麼本書還會介紹其他技術。

+1

@ user3667889你可以從這裏購買這本書:http://www.ls2capi.com/ –