dregs
驱动小牛
驱动小牛
  • 注册日期2004-02-19
  • 最后登录2006-05-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1541回复:4

先来推荐一篇好的文档,然后问个问题:-)

楼主#
更多 发布于:2004-04-07 10:16
Hi All:-)
先来推荐一篇好的文档 关于2000下写串口设备驱动的。
Updating MS Windows NT 4.0 Serial Device Drivers for Windows 2000
http://www.microsoft.com/technet/prodtechnol/winntas/deploy/nt5serie.mspx#XS


我的设备就属于下面
Non-Plug and Play Serial Device Connected to the RS-232 Port
这种情况。  

QUESTIONS:

(1) 关于获取串口指针。如下代码来获取com1的指针。

RtlInitUnicodeString(SerialDeviceName,L"\\Device\\Serial0");
status = IoGetDeviceObjectPointer(
SerialDeviceName,
FILE_ALL_ACCESS,
&pFile,
&pSerialDO);
但是调试的时候发现,pSerialDo的DriverObject是SerEnum。
请问这样获取串口指针的方式对吗?

(2)关于自己的FDO与获取的串口指针的关系。
需要把FDO和root创建的PDO Attach,
但是FDO与获取的串口指针的关系是怎样的呢?
这个地方需不需要IoAttachDeviceToDeviceStack 呢?

获取串口指针后,怎样来打开,配置串口。
现在的irpstack怎样来设置呢?

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

忘大家不吝赐教 谢了先:-)
还是我
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-07 10:22
首先谢谢你推荐的文章(虽然我还没有看)
其次,你的问题回答如下
1、这种方式OK
2、你是否需要将你的FDO Attach到PDO,要看你的FDO做什么工作而定。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
dregs
驱动小牛
驱动小牛
  • 注册日期2004-02-19
  • 最后登录2006-05-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-07 14:10
多谢^_^
我的问题是
NTSTATUS AddDevice ( IN PDRIVER_OBJECT pDriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject )
{
status = IoCreateDevice( pDriverObject,
sizeof(DEVICE_EXTENSION),
&(UNICODE_STRING)DevName,
FILE_DEVICE_SMARTCARD,
0, FALSE,
&DeviceObject );
IoAttachDeviceToDeviceStack(DeviceObject, PhysicalDeviceObject);//必需的吧?

}
获取串口指针是在处理IRP_MN_START_DEVICE的处理例程中

RtlInitUnicodeString(SerialDeviceName,L"\Device\Serial0");
status = IoGetDeviceObjectPointer(
SerialDeviceName,
FILE_ALL_ACCESS,
&pFile,
&pSerialDO);//用来保存获得的指针

然后,我创建的设备的FDO与获得的串口指针的关系是怎样的??
就是DeviceObject 和pSerialDO的关系

怎样来在我的驱动中 通过pSerialDo来操作串口??
现在通过IOCTL_SERIAL_SET_BAUD_RATE等来发送给pSerialDo
总是返回0xC0000010.Gloomy:-(
高人指点啊 !!!TIA
还是我
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-07 14:59
推荐你看看这篇
http://www.wd-3.com/archive/SerialAttachedDevices.htm
应该对你帮助很大的。
dregs
驱动小牛
驱动小牛
  • 注册日期2004-02-19
  • 最后登录2006-05-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-16 11:46
我在irp_mn_start_device中
利用IoGetDeviceObjectPointer获取了串口指针。
并且配置和监听了串口。

那么在irp_mn_stop_device中,我应该做什么工作。

各位有经验的兄弟 指点下。
还是我
游客

返回顶部