21,595
社区成员
发帖
与我相关
我的任务
分享
\Driver\SerialX
\Device\SerialX
\Device\SerialX\1 COM1
\Device\SerialX\2 COM2
\Device\SerialX\3 COM3
\Device\SerialX\4 COM4
\Device\SerialX\5 COM5
\Device\SerialX\6 COM6
\Device\SerialX\7 COM7
...
\Device\SerialX\1 COM1
// 打开一个端口设备
PDEVICE_OBJECT ccpOpenCom(ULONG id,NTSTATUS *status)
{
UNICODE_STRING name_str;
static WCHAR name[32] = { 0 };
PFILE_OBJECT fileobj = NULL;
PDEVICE_OBJECT devobj = NULL;
// 输入字符串。
memset(name,0,sizeof(WCHAR)*32);
RtlStringCchPrintfW(
name,32,
L"\\Device\\Serial%d",id);
RtlInitUnicodeString(&name_str,name);
// 打开设备对象
*status = IoGetDeviceObjectPointer(&name_str, FILE_ALL_ACCESS, &fileobj, &devobj);
if (*status == STATUS_SUCCESS)
ObDereferenceObject(fileobj);
return devobj;
}
1.换台电脑以及系统呢? 2.我在想串口加载的驱动是不是微软的驱动呢?
@u013605639 串口过滤驱动我知道怎么做。问题不是串口过滤驱动的写法。 ①我需要识别到每个串口 ②DeviceTree中只有一个DeviceObject 我无法从这一个DeviceObject中获取到收到的是哪个串口的数据。 注册表中\Device\SerialX\1 这种用法无法查找到设备。\Device\SerialX\1 COM1