急死我了,版主帮帮忙!!!!!!!(关于攫取视频的回调函数) (100分)

  • 主题发起人 主题发起人 jxhok
  • 开始时间 开始时间
J

jxhok

Unregistered / Unconfirmed
GUEST, unregistred user!
//定义一个StreamPrc函数类型及指针
type PStreamPrc=^StreamPrc;
StreamPrc=Function(lpBuffer:lpByte;DataLenth:DWORD):LRESULT stdcall;
.
.
.
//安装攫取视频的钩子函数,定义在XXX.DLL中(随压缩卡带的,在C中调用正常)
Function MPGCreateStreamHook(lpStreamFun:StreamPrc;ID:DWORD): integer;
stdcall;
external 'XXX.DLL';
.
.
.
//定义回调函数
Function GetMyStream (lpBuffer:lpByte;DataLenth:DWORD):LRESULT stdcall;
begin

.....处理视频******即使什么也不做也出现Access Voilen address XXX的错误
end;

.
.
.
//视频攫取
MPGCreateStreamHook(@GetMyStream,0);
 
问题在哪?好像没有什么问题吗。
MPGCreateStreamHook(@GetMyStream[red],[/red] 0);[?] 笔误?
 
MPGCreateStreamHook(@GetMyStream,0);
 
Function GetMyStream (lpBuffer:lpByte;DataLenth:DWORD):LRESULT stdcall;
begin

.....处理视频
end;

中 lpByte 我定义成“type lpByte=^Byte;”是否会有问题?,为什么第一次可以?帮忙想想啊!哥哥,姐姐,I'm online wait for you all,God save me
 
trye
PStreamPrc = TFarProc;

Function MPGCreateStreamHook(lpStreamFun:StreamPrc;
ID:DWORD): integer;
stdcall;

lpByte 可以直接用 PChar

其他看不出有什么问题。你为什么就是不写到底出了什么错误?!
 
错误是Access violation.......
 
没看出来什么问题,能不能贴出来详细点的。或者寄给我 tseug@263.net
 
帮忙呀,不见大家行动,所有从15:00-23:30在线的星级高手都邀请了怎么不做答
建议版主改变规则,请了不到的要减分,开玩笑,别当真,帮帮忙!!!!
 
能不能贴点具体代码出来?
 
出现这种情况绝对没劲,再好的编程经验有时也帮不了您,但是直觉有时到可以帮你找到错误所在!
 
精辟,就是找不到感觉呀!
 
我以前也因为回调函数出现过你这种情况,原因是我少加了stdcall。我认为
你的错误也可能是出在调用约定上,或者是回调函数的参数类型不对。
 
Function GetMyStream (lpBuffer:lpByte;DataLenth:DWORD):LRESULT stdcall;
改为
function GetMyStream(var lpBuffer;
DataLength: DWord):LRESULT;stdcall;

StreamPrc=Function(lpBuffer:lpByte;DataLenth:DWORD):LRESULT stdcall;
改为
StreamPrc=Function(var lpBuffer;DataLength:DWORD):LRESULT;
stdcall;
 
问题解决了,最近很忙,拖的太久了,该动态库是C做的,与参数传递顺序有关,将STDCALL改城
CSDCALL OK,
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部