2

我想我可以使用 C API 从用户 ID 文件中获取公钥。找到了功能,并认为我了解其中的大部分内容。但是我不知道如何从指向我想要的地址的地址读取数据。

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 英雄吗?

4

1 回答 1

1

假设您指的是“LotusScript to C API Programming Guide”,我有这本书。我强烈推荐它。关于内存处理有一个很好的章节。

尝试声明 OSLockObject 以返回 LMBCS 字符串,如下所示:

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

如果 SECKFMGetPublicKey 返回一个包含以 null 结尾的字符串的缓冲区,它应该可以工作。如果没有,本书中还介绍了其他技术。

于 2012-10-05T03:09:33.623 回答