阅读:1541回复:4
先来推荐一篇好的文档,然后问个问题:-)
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怎样来设置呢? ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 忘大家不吝赐教 谢了先:-) |
|
|
沙发#
发布于:2004-04-07 10:22
首先谢谢你推荐的文章(虽然我还没有看)
其次,你的问题回答如下 1、这种方式OK 2、你是否需要将你的FDO Attach到PDO,要看你的FDO做什么工作而定。 |
|
|
板凳#
发布于: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 |
|
|
地板#
发布于:2004-04-07 14:59
推荐你看看这篇
http://www.wd-3.com/archive/SerialAttachedDevices.htm 应该对你帮助很大的。 |
|
地下室#
发布于:2004-07-16 11:46
我在irp_mn_start_device中
利用IoGetDeviceObjectPointer获取了串口指针。 并且配置和监听了串口。 那么在irp_mn_stop_device中,我应该做什么工作。 各位有经验的兄弟 指点下。 |
|
|