E
eire
Unregistered / Unconfirmed
GUEST, unregistred user!
问题:<br> 在VC中调用一个DLL(DELPHI写的)一个函数,并传入参数,由DLL 生成一个句柄HANDLE返回给VC,下次VC调用这个DLL中的另一个函数时传入这个HANDLE,在DLL中如何根据这个传入的句柄得到上次VC传入的那些参数值?<br><br>1.用内存映射文件方式吗?<br>function init(const pParamDgramParam):THandle;stdcall;<br>begin<br> Result:=0;<br> hFile:= CreateFileMapping($FFFFFFFF,nil,<br> PAGE_READWRITE,<br> 0,<br> SizeOf(TDgramParam),<br> MEM_FILENAME);<br> if hFile = INVALID_HANDLE_VALUE then Exit;<br><br> DgramParam:= MapViewOfFile(hFile,<br> File_MAP_WRITE,<br> 0,<br> 0,<br> 0);<br> if DgramParam =nil then Exit;<br> Move(pParam,DgramParam,sizeof(TDgramParam));<br> Result:=hFile;<br>end;<br><br>function GetInitParams(hDgram:thandle):integer;stdcall<br>begin<br> Result:=-1;<br> if hDgram>0 then<br> [red]DgramParam [/red]:= MapViewOfFile(hDgram, FILE_MAP_ALL_ACCESS, 0, 0, 0);<br> if DgramParam<>nil then<br> Result:=DgramParam.param1;<br>end; <br>说明:<br> 我在DELPHI中测试,调用DLL中上面两个函数,首先调用init函数,并保存其返回的HANDLE,然后调用DLL中的另一个函数GetInitParams并传入上次返回的HANDLE.但[red]DgramParam[/red] 始终为NIL,不知为何.<br>不知还有其他解决方案没有.