句柄的问题

fbwt 2006-04-24 12:49:24
在VC的DLL中有一个函数,DSF_Proxy_SetEncrypt(DWORD nStrategyCookie,HWND hParentWnd,BYTE pBuf[CS_BUFFER_LENGTH],DWORD nLength);
但是我要在delphi中使用
我在delphi中的定义如下:
function DSF_Proxy_SetDecrypt(nStrategyCookie:Longint;hParentWnd:THandle;pBuf:PByte;nLength:Longint):Longint;stdcall;

现在vc的dll是不可修改的,但是我要调用DSF_Proxy_SetDecrypt,并且hParentWnd要为空,

请问,我在delphi中调用这个函数时,如何给句柄空直,或者说,这VC的DLL中的函数,在Delphi中如何的调用!
...全文
182 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fbwt 2006-04-25
  • 打赏
  • 举报
回复
少了stdcall!:)
老之 2006-04-24
  • 打赏
  • 举报
回复
句柄为0就相当于空值了
fbwt 2006-04-24
  • 打赏
  • 举报
回复
在VC中的调用是这样的!

DWORD nDefaultStrategyCookie=DSF_Strategy_GetKernelDefault();
BYTE pBuf[8192];
memset(pBuf,0,8192);
strcpy((char*)pBuf,"123456");//配置是一个密码串:"123456"
DSF_Proxy_SetEncrypt(nDefaultStrategyCookie,NULL,pBuf,7) //实际上pBuf有效的就只有7个字节

--------------------------------------------------------------------------------------------------

我的定义是
function DSF_Proxy_SetEncrypt(nStrategyCookie:Longint;hParentWnd:THandle;pBuf:PByte;nLength:Longint):Longint;stdcall;

调用时
sPass:array [0..8191] of byte;
psPass:PByte;
nDefaultStrategyCookie:Longint;

nDefaultStrategyCookie:=DSF_Strategy_GetKernelDefault;
psPass:=@sPass;
DSF_Proxy_SetEncrypt(nDefaultStrategyCookie,0,@sPass,6);//实际上pBuf有效的就只有7个字节,所以可以只分配7字节空间的,但我们还是按照接口要求分配了8192字节;

但是运行到这一行出现非法错误!

柯本 2006-04-24
  • 打赏
  • 举报
回复
这样试试:
procedure DSF_Proxy_SetEncrypt(nStrategyCookie:dword;hParentWnd:thandle;pBuf:pbyte;nLength:dword);stdcall;external 'testdll.dll';
var
a:array [0..10] of byte;
...
DSF_Proxy_SetEncrypt(0,0,@a,5);
柯本 2006-04-24
  • 打赏
  • 举报
回复
你的delphi调用上应该没问题,重新查一下你的VC定义,看看它是否含有stdcall,如果没有,delphi要定义成
function DSF_Proxy_SetEncrypt(nStrategyCookie:Longint;hParentWnd:THandle;pBuf:PByte;nLength:Longint):Longint;cdecl;external 'test.dll';
另外,不知你用静态还是动态调用.动态时要检查函数指针是否得到
slzzg 2006-04-24
  • 打赏
  • 举报
回复
BYTE pBuf[CS_BUFFER_LENGTH], 应该是定义一个指针数组

pBuf:PByte, 应该只是定义指向指向Byte的指针的。

函数定义错误。
fbwt 2006-04-24
  • 打赏
  • 举报
回复
我调用时是这样的
DSF_Proxy_SetEncrypt(nDefaultStrategyCookie,0,psPass,7);但出现了非法操作

16,746

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧