API的C声明:
WINADVAPI
BOOL
WINAPI
CryptSignHashA(
    HCRYPTHASH hHash,
    DWORD dwKeySpec,
    LPCSTR szDescription,
    DWORD dwFlags,
    BYTE *pbSignature,
    DWORD *pdwSigLen
    );我在VB中的声明
Public Declare Function CryptSignHash Lib "advapi32.dll" Alias "CryptSignHashA" _
(ByVal hHash As Long, _
 ByVal dwKeySpec As Long, _
 ByRef sDescription As String, _
 ByVal dwFlags As Long, _
 ByVal pbSignature As String, _
 ByRef pdwSigLen As Long) _
 As Integer
调用过程
ret = CryptAcquireContext(m_CryptProv, "", sCSPname, PROV_RSA_FULL, CRYPT_NEWKEYSET)
If ret <> CP_SUCCESS Then GoTo Error_Handle
Call AddInfo("CryptAcquireContext OK")    ret = CryptGenKey(m_CryptProv, AT_SIGNATURE, 0, m_hKey)
    ret = CryptCreateHash(m_CryptProv, CALG_SHA1, 0, 0, m_hHash)    
    ret = CryptHashData(m_hHash, "Test Hash Data", Len("Test Hash Data"), 0)
    
    
    ret = CryptSignHash(m_hHash, AT_SIGNATURE, vbNullString, 0, vbNullString, dwDataLen)
    
    pbSignature = String(dwDataLen, Chr(0))
    
    ret = CryptSignHash(m_hHash, AT_SIGNATURE, vbNullString, 0, pbSignature , dwDataLen)
这时候,dwDataLen = 128,这个值跟是预期的长度,可是 pbSignature 是不可见字符串,用Len获取长度却是170.请问哪位知道问题出在哪里,谢谢啦!