我想在windows ddk 7软件包中使用offreg.dll在内存中创建一个脱机注册表。ERROR_MORE_DATA ----从注册表中读取
你可以找到在这里offreg.dll的更多信息:MSDN
目前,在试图从一个打开的注册表配置单元/键我收到以下错误读取值:234或ERROR_MORE_DATA
这里是包含ORGetValue的.H代码:
DWORD
ORAPI
ORGetValue (
__in ORHKEY Handle,
__in_opt PCWSTR lpSubKey,
__in_opt PCWSTR lpValue,
__out_opt PDWORD pdwType,
__out_bcount_opt(*pcbData) PVOID pvData,
__inout_opt PDWORD pcbData
);
这里是我使用提取数据的代码
[DllImport("offreg.dll", CharSet = CharSet.Auto, EntryPoint = "ORGetValue", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
public static extern uint ORGetValue(IntPtr Handle, string lpSubKey, string lpValue, out uint pdwType, out string pvData, out uint pcbData);
IntPtr myHive;
IntPtr myKey;
string myValue;
uint pdwtype;
uint pcbdata;
uint ret3 = ORGetValue(myKey, "", "DefaultUserName", out pdwtype, out myValue, out pcbdata);
目标是能够将myValue作为字符串读取。
我不确定是否需要使用封送......或者第二次调用缓冲区调用..或者真的如何调整C#中的缓冲区。任何帮助或指针将不胜感激。
谢谢。
不太确定代码中会出现什么样子,使用我上面的示例,您能否偶然演示一个演示? 谢谢。 – user314749 2010-04-12 19:13:47
顺便说一下,buffer.Append(“DefaultUserName”);不需要。 – user314749 2010-04-12 20:03:27