DLL 调用中遇到的奇怪问题?!!(100分)

  • 主题发起人 主题发起人 theng
  • 开始时间 开始时间
T

theng

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在进行PALM机用户管理编程时,要调用一个DLL中的函数,原型是:
long UmGetUserName(DWORD dwUserID, TCHAR *pUserBuffer, short *psUserBufSize);
调用时,给出USERID,返回对应用户名到pUserBuffer中,最后一个参数是buffer大小。
我用了external、stdcall的方式调用,结果用户名长度(buffer size)返回正确,而用户名返回为
空串,出错代码(函数返回的LONG值)是“buffer不够大”,不管怎样分配内存给它都不行,
可是用户名才有五个字节啊!这是怎么回事?
 
指的对不对么?
 
请继续或结束
 
请继续或结束
 
buffer size+1试试
 
;不知你使用sharemem这个单元没有?
 
函数原形:long UmGetUserName(DWORD dwUserID, TCHAR *pUserBuffer, short *psUserBufSize);?
~~~~~~~~~~~~~~~~不是char* ?支持mbcs or UNICODE ?
不是extern "C" bool WINAPI __export UmGetUserName(DWORD dwUserID, TCHAR *pUserBuffer, short *psUserBufSize);?
 
psUserBufSize不光返回的作用,
在调用前你还要给它赋pUserBuffer拥有的缓冲区的长度值。
 
多人接受答案了。
 
后退
顶部