毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

delphi:Access violation at address 00000000 Read of address 0000000

更新时间:2012-5-21:  来源:毕业论文

关于 标准USB通信问题
下面是我的代码求高手解释:
function TUsbUtil.OpenUsbDevice(pGuid: TGUID; sDevNameBuf: pchar): THandle; 
var 
  hDevInfo1 : HDEVINFO;
  deviceInfoData : TSPDeviceInterfaceData ; 
  nGuessCount : Dword; 
  iDevIndex :DWord; 
  hOut: THandle; 
begin
showmessage('e');
  //hDevInfo1 := SetupDiGetClassDevs(@pGuid, nil,0, DIGCF_PRESENT or DIGCF_DEVICEINTERFACE);
  SetupDiGetClassDevs(@pGuid, nil,0, DIGCF_PRESENT or DIGCF_DEVICEINTERFACE); showmessage('f');
  deviceInfoData.cbSize := sizeof(TSPDeviceInterfaceData);
  nGuessCount := MAXLONG;
  for iDevIndex :=0 to nGuessCount do 
  begin 
  if(SetupDiEnumDeviceInterfaces(hDevInfo1,nil,pGuid,iDevIndex,deviceInfoData)) then 
  begin 
  hOut := OpenOneDevice(hDevInfo1, @deviceInfoData, sDevNameBuf);
  if (hOut <> INVALID_HANDLE_VALUE) then 
  begin 
  break; 
  end 
  else if (GetLastError() = ERROR_NO_MORE_ITEMS) then 
  begin 
  break; 
  end; 
  end; 
  end; 
  SetupDiDestroyDeviceInfoList(hDevInfo1);
  Result := hOut;
end;
函数在执行到红色部分是出现错误;提示:
Access violation at address 00000000 Read of address 0000000
我在网上查了下 是非法访问地址,有可能是没有初始化造成的,可我看了下我函数,也没有研究出个所以然求高手指导!

SetupDiGetClassDevs(@pGuid, nil,0, DIGCF_PRESENT or DIGCF_DEVICEINTERFACE);

这个可能是这个过程中有问题的 
这个函数 涉及 2个单元 其中在单元setupapi.pas中@SetupDiGetClassDevs := GetModuleSymbolEx(SetupApiLib, 'SetupDiGetClassDevsA', Result);
在Moduleloader.pas 中函数为:
function GetModuleSymbolEx(Module: TModuleHandle; SymbolName: string; var Accu: Boolean): Pointer;
begin
  Result := nil;
  if Module <> INVALID_MODULEHANDLE_VALUE then
  Result := dlsym(Module, PChar(SymbolName));
  Accu := Accu and (Result <> nil);
end;

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。