windows Driver 查询指定键值
NTSTATUS status;
HANDLE hKey = NULL;
OBJECT_ATTRIBUTES oa;
UNICODE_STRING strPath = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\HARDWARE\\DEVICEMAP\\SERIALCOMM");
UNICODE_STRING strKeyName = RTL_CONSTANT_STRING(L"\\Device\\Serial0");
ULONG ResultLength = 0;
PKEY_VALUE_PARTIAL_INFORMATION Pkvpi;
ULONG index = 0; UNICODE_STRING strOutPut;
wchar_t strTemp[ArrayLength] = {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 = ZwQueryValueKey(hKey, &strKeyName, KeyValuePartialInformation, NULL, 0, &ResultLength);
if (status == STATUS_OBJECT_NAME_NOT_FOUND || ResultLength == 0){
KdPrint(("ZwQueryValueKey failed"));
ZwClose(hKey);
return ;
}
Pkvpi = (PKEY_VALUE_PARTIAL_INFORMATION) ExAllocatePool(PagedPool, ResultLength);
if (!Pkvpi){
KdPrint(("ExAllocatePool failed"));
ExFreePool(Pkvpi);
ZwClose(hKey);
return;
}
status = ZwQueryValueKey(hKey, &strKeyName, KeyValuePartialInformation, Pkvpi, ResultLength, &ResultLength);
if (!NT_SUCCESS(status)){
KdPrint(("ZwQueryValueKey failed"));
ExFreePool(Pkvpi);
ZwClose(hKey);
return;
} RtlStringCbPrintfW(strOutPut.Buffer, ArrayLength, L"%s", Pkvpi->Data);
KdPrint(("%ws", strOutPut.Buffer)); ExFreePool(Pkvpi);
ZwClose(hKey);
版权声明:本文为博主原创文章,未经博主允许不得转载。
windows Driver 查询指定键值的更多相关文章
- NodeMCU使用ArduinoJson判断指定键值对存在与否
NodeMCU使用ArduinoJson判断指定键值对存在与否 从ArduinoJson库中可以得知,判断键值对是否存在可以使用containskey()函数,但是查看ArduinoJson-cont ...
- Memcache遍历查询所有键值的方法
直接举个Telnet命令行下遍历memcached所有key的方法: stats items STAT items:7:number1 STATitems:7:age188 END stats c ...
- windows模糊查询指定进程是否存在
习惯的查询 wmic process | findStr /i "**" /i 忽略大小写 我查考的链接 常用批处理命令总结3之Find和FindStr
- Windows下查询指定端口进程,并杀死
1. 找到指定端口的进程号 c:\devworks\lib\httpd-2.4.10-win32-VC9\Apache24\bin>netstat -ano|findstr "9000 ...
- JavaScript获取Django模板中指定键值的数据,使用过滤器
Django中利用js来操作数据的常规操作一般为点(.)操作符来获取字典或列表的数据,一般如{{data.0}},{{data.arg}} 但有时如果数据是嵌套类型的数据时,直接获取某个值就变得困难了 ...
- C# Aspose word 替换指定键值数据
今天研究一天的导出word,一开始准备选用为软件自带的office,但是有局限性,机子上必须安装office才能使用,最后在网上搜了一下资料aspose开源的 小公司没得钱,你懂得.最后选择了这款 开 ...
- php对数组中指定键值排序
function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k= ...
- PHP 二维数组排序 可以按指定 键值排序
<?php header("Content-Type:utf-8"); $arr = array( 0 => array( 'name' => '国际原油价格', ...
- sql xml 查询指定节点值,以及节点属性值
SELECT top 10 [HFMBDATA].query('(/Items/Item[@ID=''tbBryj''])').value('(//TextValue)[1]','nvarcha ...
随机推荐
- tcpdump 获取SQL
tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ ...
- centos6忘记root密码
Centos6 1.在开机时不要自动进入系统,按任意键进入GRUB引导菜单 2.按E键进入编辑模式 3.选中kernel选项继续按E键 4.在结尾处添加single关键字后按ENTER保存退出 5.之 ...
- 小米xiaomi9 google play卡在检查信息
终于在今年淘汰掉用了三年的果6s,换了小米9 ,结果发现科学..上网后,可以正常打开google网页,却无法登陆,gmail也无法使用.一直卡在“正在核对信息”. 检查服务,小米9 全系列自带了谷歌框 ...
- 074、Java面向对象之构造方法重载
01.代码如下: package TIANPAN; class Book { // 定义一个新的类 private String title; // 书的名字 private double price ...
- CodeForces - 876E National Property(2-sat)
题意:有n个有小写字母组成的字符串,将部分小写字母改成对应的大写字母,注意某种小写字母更改,所有的这种小写字母都会更改.若能使这给定的n个字符串符合字典序由小到大排序,则输出Yes,并输出需要修改的字 ...
- 从ofo到乐视,变卖资产好过冬靠谱吗?
今年年底,有很多人"被迫"离职.他们为了应对生活压力和找工作的不确定性,尝试在二手平台上卖出自己的奢侈品或心爱之物,以期度过潜在的难关.而对于很多企业来说,这个冬天也非常冷.依靠常 ...
- Redis Cluster 4.0.9 集群安装搭建
Redis Cluster 4.0.9集群搭建步骤:yum install -y gcc g++ gcc-c++ make openssl cd redis-4.0.9 make mkdir -p / ...
- other#apache-commons
if you want to be a better javaer, you should spent time on apache commons.
- Python中基于Unpacking与Packing进行分割,组合操作的嵌套元组数据结构的应用
对于二叉树,图等,Python可采用基于Packing与Unpacking形成的嵌套元组数据结构来模拟,这里Packing指,比如a=b,c则,a就成了一个包含b,c的元组,Unpacking是指,比 ...
- 关于无法下载sklearn中的MNIST original数据集的问题
在使用Sklearn进行加载自带的数据集MNIST时,总是报错,代码及相应的错误显示如下: from sklearn.datasets import fetch_mldata mnist = fetc ...