| 
			 
					阅读:3229回复:1
				 
				用IoOpenDeviceRegistryKey和ZwQueryValueKey读注册表的问题
					各位高人: 
							有急需请教一下,我是新手,望各位帮忙。 我要在驱动中调用注册表内的一个值,就是usb 相机的FrameRate的值来做判断,我要的值在 HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Class\\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\\0001\\FrameRateNumber中,就是FrameRateNumber的值 我先用 status=IoOpenDeviceRegistryKey (pDC->pPnPDeviceObject,PLUGPLAY_REGKEY_DRIVER,STANDARD_RIGHTS_READ,&hPDOKey); 打开设备的驱动对象,然后用 status = ZwQueryValueKey( hPDOKey, FrameRateNumber, //要获取数据的注册表键的名称 KeyValuePartialInformation, //请求信息的类型 &Framerate, //缓冲区指针 0x80, //缓冲区大小 &dataLength); 来得到此值,可是一直没有成功,这个函数我没有使用过,请大家指教一下,如何才可以得到这个值? 头文件,初始化我都OK了.  | 
	|
| 
			 驱动小牛 
					 
				 | 
		
			 沙发# 
								发布于:2008-02-25 11:28				
			Re:用IoOpenDeviceRegistryKey和ZwQueryValueKey读注 
					我的用法:IoOpenDeviceRegistryKey(pdo, PLUGPLAY_REGKEY_DEVICE, STANDARD_RIGHTS_READ, ®Handle); length = sizeof(KEY_VALUE_PARTIAL_INFORMATION) + 128*sizeof(WCHAR);//你用的0x80仔细算下 pInfo = (PKEY_VALUE_PARTIAL_INFORMATION)ExAllocatePool(NonPagedPool, length); ZwQueryValueKey(regHandle, &keyNameString, KeyValuePartialInformation, pInfo, length, &length); 如果是对的话就看看返回什么值 ZwQueryValueKey returns STATUS_SUCCESS if it returned the requested information in the KeyValueInformation buffer. Otherwise, ZwQueryValueKey can return one of the following: STATUS_BUFFER_OVERFLOW STATUS_BUFFER_TOO_SMALL STATUS_INVALID_PARAMETER STATUS_OBJECT_NAME_NOT_FOUND  |