//枚举串口
NTSTATUS status;
HANDLE hKey = NULL;
OBJECT_ATTRIBUTES oa;
UNICODE_STRING strPath = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\HARDWARE\\DEVICEMAP\\SERIALCOMM");//
ULONG ResultLength = 0; PKEY_FULL_INFORMATION PKFI;
PKEY_VALUE_PARTIAL_INFORMATION pkvpi;
UNICODE_STRING strOutPut;
wchar_t strTemp[ArrayLength] = {0}; ULONG i = 0;
ULONG nSubKeys = 0; RtlInitEmptyUnicodeString(&strOutPut, strTemp, ArrayLength); InitializeObjectAttributes(&oa, &strPath, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
status = ZwOpenKey(&hKey, KEY_ALL_ACCESS, &oa);
if (!NT_SUCCESS(status)){
KdPrint(("ZwOpenKey failed"));
return status;
} ZwQueryKey(hKey, KeyFullInformation, NULL, 0, &ResultLength);
PKFI = (PKEY_FULL_INFORMATION)ExAllocatePool(PagedPool, ResultLength);
if (PKFI == NULL){
KdPrint(("ExAllocatePool failed"));
ZwClose(hKey);
ExFreePool(PKFI);
return STATUS_INSUFFICIENT_RESOURCES;
}
status = ZwQueryKey(hKey, KeyFullInformation, PKFI, ResultLength, &ResultLength);
if (!NT_SUCCESS(status)){
KdPrint(("ZwEnumerateKey failed with error %I32X", status));
ZwClose(hKey);
ExFreePool(PKFI);
return status;
} nSubKeys = PKFI->Values;
KdPrint(("子键个数: %I32d", PKFI->Values));
ExFreePool(PKFI); for (; i < nSubKeys; i++){
ZwEnumerateValueKey(hKey, i, KeyValuePartialInformation, NULL, 0, &ResultLength);
pkvpi = (PKEY_VALUE_PARTIAL_INFORMATION)ExAllocatePool(PagedPool, ResultLength);
if (pkvpi == NULL){
KdPrint(("ExAllocatePoolWithTag failed"));
ZwClose(hKey);
ExFreePool(pkvpi);
return STATUS_INSUFFICIENT_RESOURCES ;
} status = ZwEnumerateValueKey(hKey, i, KeyValuePartialInformation, pkvpi, ResultLength, &ResultLength);
if (!NT_SUCCESS(status)){
KdPrint(("ZwEnumerateValueKey failed with error %I32X", status));
ZwClose(hKey);
ExFreePool(pkvpi);
return status;
} RtlStringCbPrintfW(strOutPut.Buffer, ArrayLength, L"%s", pkvpi->Data);
KdPrint(("%ws", strOutPut.Buffer));
ExFreePool(pkvpi);
} ZwClose(hKey);
return STATUS_SUCCESS;

版权声明:本文为博主原创文章,未经博主允许不得转载。

windows driver 枚举串口的更多相关文章

  1. 驱动开发利器Microsoft Windows Driver Kit 7.1.0下载

    在Windows 2000 与Windows XP 系统采用是WINDDK来开发WINDOWS驱动程序,我手头也有WINDDK,可是从Windows Vista开始之后,一般采用Microsoft W ...

  2. 微软职位内部推荐-SDE2 (Windows driver)

    微软近期Open的职位: SDE2 (Windows driver) Job title: Software Development Engineer 2 Location: Shanghai, Ch ...

  3. 和S5933比较起来,开发PLX9054比较不幸,可能是第一次开发PCI的缘故吧。因为,很多PCI的例子都是对S5933,就连微软出版的《Programming the Microsoft Windows Driver Model》都提供了一个完整的S5933的例子。 在这篇有关DDK的开发论文里。

    和S5933比较起来,开发PLX9054比较不幸,可能是第一次开发PCI的缘故吧.因为,很多PCI的例子都是对S5933,就连微软出版的<Programming the Microsoft Wi ...

  4. Windows SDK DDK WDK (Windows Driver Kit) 区别

    首先,先从基础的东西说起,开发WINDOWS下的驱动程序,需要一个专门的开发包,如:开发JAVA程序,我们可能需要一个JDK,开发WINDOWS应用程序,我们需要WINDOWS的SDK,现在开发WIN ...

  5. 使用Windows API进行串口编程

    使用Windows API进行串口编程   串口通信一般分为四大步:打开串口->配置串口->读写串口->关闭串口,还可以在串口上监听读写等事件.1.打开和关闭串口Windows中串口 ...

  6. Windows Driver Kit Version 7.1.0 ( 也就是 7600.16385.1 ) 下载地址

    Windows Driver Kit Version 7.1.0 ( 也就是 7600.16385.1 ) 下载地址 http://download.microsoft.com/download/4/ ...

  7. windows枚举串口

    1. 枚举键值 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 2. SETUPAPI方式 int EnumPortsWdm() { int i, d ...

  8. WINDOWS 命令行 串口 COM 发送数据

    WINDOWS 命令 串口 数据 type con>com1 回车. com1 为想发送的串口. 输入字符并回车即可.

  9. windows driver 简单的驱动和通信

    sysmain.c #pragma once #pragma warning(disable: 4100) #include <ntifs.h> #include <ntddk.h& ...

随机推荐

  1. CentOS 下 安装 nginx 执行配置命令 ./configure 报错

    CentOS 下 安装 nginx 执行配置命令 ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx 时提示以下错误: checkin ...

  2. 全程2分钟!教你如何免费下载Windows 10

    全程2分钟!教你如何免费下载Windows 10 2014-10-02 08:40:59  来源:pconline 原创  作者:唐山居人  责任编辑:caoweiye  (评论314条)   终于在 ...

  3. php 语法错误定位 try catch Throwable

    try { } catch (Exception $ex) {      // 计算错误 }  catch (Throwable $ex) { // 语法错误,致命错误 }   Throwable { ...

  4. 十三: 悲观锁&乐观锁:解决丢失更新问题

    悲观锁:认为丢失更新一定会出现,可以在查询的时候加入for update 认为丢失更新一定会出现,查询时: select * from account for update;for update :  ...

  5. metasploit扫描

    实验目的: 一.  基于TCP协议收集主机信息 二.  基于SNMP协议收集主机信息 三.  基于SMB协议收集信息 四.  基于SSH协议收集信息 五.  基于FTP协议收集信息     实验环境: ...

  6. win10提示防火墙没有法更改某些设置的处理办法

    一.问题发现 远程链接电脑时间发现远程链接失败 提问在“控制面板” 中打开“程序” 列表中启用“windows 防火墙” . 按照提示启用防火墙 ,发现启用或关闭页面不可编辑 二.原因是防火墙Wind ...

  7. ssh与scp

    ssh命令用于linux 的远程登录,其默认端口为:22,在工作中常常会修改掉这一默认端口的值. scp命令用于远程的文件相互拷贝. scp远程文件拷贝: [root@jerry a]#ls     ...

  8. Vmware 和 VisualSVN-Server端口冲突

    安装 VisualSVN-Server 时,发现他和 Vmware   在端口  443 冲突: 先把本地自启动的 Vmware 全部停止,并改成手工启动服务: 这样可以节省资源,再安装 svn服务时 ...

  9. 3 JVM配置参数

  10. eshop4-tomcat 安装

    1. 下载tomcat 7 2. 解压缩 注意:是否使用sudo 权限执行请根据具体环境来决定 3. sudo vim /etc/profile 在最下方增加 export CATALINA_HOME ...