WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(三)——所涉及的Windows驱动基... 阅读

深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(4)

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 参数KeyHandle为打开的注册表句柄,参数ValueName为要查询的键名,深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(4)(3),参数KeyValuelnformationClass决定不同的查询类别,参数KeyValuelnformation选择一种查询类别,&

参数KeyHandle为打开的注册表句柄。参数ValueName为要查询的键名。参数KeyValuelnformationClass决定不同的查询类别。参数KeyValuelnformation选择一种查询类别。选择KeyValueBasiclnformation、KeyValueFulllnformation或者KeyValuePartiallnformation。参数Length为要查数据的长度。参数ResultLength为实际查询返回的数据长度。

如果打开成功函数返回STATUS_SUCCESS,否则返回一个错误代码。

使用ZwQueryValueKey函数查询注册表单时,需要用KeyValuelnformationClass选择一种查询方式。这可以是KeyVajueBasiclnformation、KeyValueFulllnformation或者KeyValuePartiallnformation中的一种。这分别代表查询基本信息,查询全部信息和查询部分信息,每种查询类型会有对应的一种数据结构获得查询结果。

一般情况下,选择KeyValuePartiallnformation就可以查询键值的数据了,它对应的查询数据结构是KEY_VALUE_PARTIAL_INFORMATION的数据结构。

typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
ULONG  TitleIndex;
ULONG  Type;
ULONG  DataLength;
UCHAR  Data[1];  //变量的大小
} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;

KEY_VALUE_PARTIAL_INFORMATION的数据结构长度不固定,所以首先要确定这个长度。一般使用ZwQueryValueKey分为4个步骤操作。

Ø         用ZwQueryValueKey获取这个数据结构的长度。

Ø         分配如此长度的内存,用来查询。

Ø         再次调用ZwQueryValueKey,获取键值。

Ø         回收内存。

上一页  1 2 3 4 5 6  下一页

Tags:深度 剖析 WinPcap

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接