lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1384回复:4

2k下和98下的com口设备名有何区别。

楼主#
更多 发布于:2002-06-10 11:28
我用同一个驱动在2k下可一打开com2口但在98下却不能我的代码如下:
StatuBlock=(PIO_STATUS_BLOCK )ExAllocatePool(NonPagedPool ,sizeof(StatuBlock));
        RtlInitUnicodeString(&Filename,L\"\\\\??\\\\COM2\");
        RtlZeroMemory(&ObjectAttr,sizeof(ObjectAttr));
        ObjectAttr.Length=sizeof(ObjectAttr);
        ObjectAttr.ObjectName=&Filename;
        ObjectAttr.SecurityDescriptor =NULL;
  
       OpFStatus=ZwCreateFile( &(pDE->ComHandle),
                             GENERIC_READ|GENERIC_WRITE,
                             &ObjectAttr,
                             StatuBlock,
                             0,
                             FILE_ATTRIBUTE_NORMAL,
                             0,
                             FILE_OPEN ,
                             FILE_NON_DIRECTORY_FILE,
                             NULL,
                             0
                          );
其中OpFStatus在98下的返回值为:STATUS_OBJECT_PATH_NOT_FOUND     ((NTSTATUS)0xC000003AL)
,也就是说设备名不是“\\\\??\\\\COM2”请问各位能告诉我98下com口的设备名么?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-06-10 11:45
98不用Unicode的,可能
RtlInitUnicodeString(&Filename,L\"\\\\??\\\\COM2\");有问题吧。
lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-10 14:49
但是:ObjectAttr.ObjectName指明是要PUNICODE_STRING的。98下的com口的设备名应该是unicode吧。我想让我的驱动(wdm)代替应用程序来对com口进行读写(用ZwReadfile,ZwWritefile等),不知大家认为这种想法可不可行?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-06-11 09:42
我也看了,也奇怪。98确实不支持UNICODE的。
98对WDM的支持不是很好的。不如用VxD吧。
lmycs
驱动牛犊
驱动牛犊
  • 注册日期2001-07-23
  • 最后登录2002-12-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-11 11:09
可是我现在刚学wdm不久,以前从来没认真的看过vxd的书。。。看来在98下用wdm驱动打开com的vxd驱动进行读写是不太好实现的了。但应用程序打开com口调用createfile()时内核不是相应的调用zwcreatefile()来实现应用的请求的吗?而vxd的设备也应该有个可确定的设备名称吧?
游客

返回顶部