10 void dprintf(char* fmt
, ...)
16 vsprintf(buffer
,fmt
,args
);
17 WriteConsoleA(OutputHandle
, buffer
, strlen(buffer
), NULL
, NULL
);
22 int main(int argc
, char* argv
[])
24 HKEY hKey
= NULL
,hKey1
;
27 DWORD Err
, RegDataType
, RegDataSize
, OldComPortNumber
;
28 OBJECT_ATTRIBUTES ObjectAttributes
;
29 HANDLE StConfigHandle
;
32 UNICODE_STRING KeyName
;
33 BOOL GlobalFifoEnable
;
37 KEY_BASIC_INFORMATION KeyInformation
[5];
38 KEY_VALUE_FULL_INFORMATION KeyValueInformation
[5];
41 InputHandle
= GetStdHandle(STD_INPUT_HANDLE
);
42 OutputHandle
= GetStdHandle(STD_OUTPUT_HANDLE
);
44 dprintf("NtOpenKey \\Registry : ");
45 RtlInitUnicodeString(&KeyName
, L
"\\Registry");
46 InitializeObjectAttributes(&ObjectAttributes
,
51 Status
=NtOpenKey( &hKey1
, MAXIMUM_ALLOWED
, &ObjectAttributes
);
52 dprintf("\t\t\t\tStatus =%x\n",Status
);
55 dprintf("NtQueryKey : ");
56 Status
=NtQueryKey(hKey1
,KeyBasicInformation
57 ,&KeyInformation
[0], sizeof(KeyInformation
)
59 dprintf("\t\t\t\t\tStatus =%x\n",Status
);
60 if (Status
== STATUS_SUCCESS
)
62 dprintf("\tKey Name = ");
63 for (i
=0;i
<KeyInformation
[0].NameLength
/2;i
++)
64 dprintf("%C",KeyInformation
[0].Name
[i
]);
67 dprintf("NtEnumerateKey : \n");
69 while(Status
== STATUS_SUCCESS
)
71 Status
=NtEnumerateKey(hKey1
,Index
++,KeyBasicInformation
72 ,&KeyInformation
[0], sizeof(KeyInformation
)
74 if(Status
== STATUS_SUCCESS
)
76 dprintf("\tSubKey Name = ");
77 for (i
=0;i
<KeyInformation
[0].NameLength
/2;i
++)
78 dprintf("%C",KeyInformation
[0].Name
[i
]);
82 dprintf("NtCloseKey : ");
83 Status
= NtClose( hKey1
);
84 dprintf("\t\t\t\t\tStatus =%x\n",Status
);
87 dprintf("NtOpenKey \\Registry\\Machine : ");
88 RtlInitUnicodeString(&KeyName
, L
"\\Registry\\Machine");
89 InitializeObjectAttributes(&ObjectAttributes
,
94 Status
=NtOpenKey( &hKey1
, MAXIMUM_ALLOWED
, &ObjectAttributes
);
95 dprintf("\t\t\tStatus =%x\n",Status
);
97 dprintf("NtOpenKey System\\Setup : ");
98 RtlInitUnicodeString(&KeyName
, L
"System\\Setup");
99 InitializeObjectAttributes(&ObjectAttributes
, &KeyName
, OBJ_CASE_INSENSITIVE
101 Status
= NtOpenKey ( &hKey
, KEY_READ
, &ObjectAttributes
);
102 dprintf("\t\t\tStatus =%x\n",Status
);
105 dprintf("NtQueryValueKey : ");
106 RtlInitUnicodeString(&KeyName
, L
"CmdLine");
107 Status
=NtQueryValueKey(hKey
,&KeyName
,KeyValueFullInformation
108 ,&KeyValueInformation
[0], sizeof(KeyValueInformation
)
110 dprintf("\t\t\t\tStatus =%x\n",Status
);
111 if (Status
== STATUS_SUCCESS
)
113 dprintf("\tValue:DO=%d, DL=%d, NL=%d, Name = "
114 ,KeyValueInformation
[0].DataOffset
115 ,KeyValueInformation
[0].DataLength
116 ,KeyValueInformation
[0].NameLength
);
117 for (i
=0;i
<10 && i
<KeyValueInformation
[0].NameLength
/2;i
++)
118 dprintf("%C",KeyValueInformation
[0].Name
[i
]);
120 dprintf("\t\tType = %d\n",KeyValueInformation
[0].Type
);
121 if (KeyValueInformation
[0].Type
== REG_SZ
)
122 dprintf("\t\tValue = %S\n",KeyValueInformation
[0].Name
+1
123 +KeyValueInformation
[0].NameLength
/2);
125 dprintf("NtEnumerateValueKey : \n");
127 while(Status
== STATUS_SUCCESS
)
129 Status
=NtEnumerateValueKey(hKey
,Index
++,KeyValueFullInformation
130 ,&KeyValueInformation
[0], sizeof(KeyValueInformation
)
132 if(Status
== STATUS_SUCCESS
)
134 dprintf("\tValue:DO=%d, DL=%d, NL=%d, Name = "
135 ,KeyValueInformation
[0].DataOffset
136 ,KeyValueInformation
[0].DataLength
137 ,KeyValueInformation
[0].NameLength
);
138 for (i
=0;i
<KeyValueInformation
[0].NameLength
/2;i
++)
139 dprintf("%C",KeyValueInformation
[0].Name
[i
]);
140 dprintf(", Type = %d\n",KeyValueInformation
[0].Type
);
141 if (KeyValueInformation
[0].Type
== REG_SZ
)
142 dprintf("\t\tValue = %S\n",((char*)&KeyValueInformation
[0]
143 +KeyValueInformation
[0].DataOffset
));
146 dprintf("NtCloseKey : ");
147 Status
= NtClose( hKey1
);
148 dprintf("\t\t\t\t\tStatus =%x\n",Status
);
155 dprintf ("RegOpenKeyExW HKLM\\System\\ControlSet001: ");
156 dwError
= RegOpenKeyExW(HKEY_LOCAL_MACHINE
,
157 L
"System\\ControlSet001",
161 dprintf ("dwError %x\n", dwError
);
163 Status = NtCreateKey ( &hKey, KEY_ALL_ACCESS , &ObjectAttributes
164 ,0,NULL,REG_OPTION_VOLATILE,NULL);
165 dprintf("Status=%x\n",Status);
169 dprintf ("RegOpenKeyExW: ");
170 dwError
= RegOpenKeyExW(HKEY_LOCAL_MACHINE
,
171 L
"System\\ControlSet001\\Services\\Serial",
175 dprintf ("dwError %x\n", dwError
);
176 RegDataSize
= sizeof(GlobalFifoEnable
);
177 if (dwError
== ERROR_SUCCESS
)
179 dprintf ("RegQueryValueExW: ");
180 dwError
= RegQueryValueExW(hKey
,
184 (PBYTE
)&GlobalFifoEnable
,
186 dprintf ("dwError %x\n", dwError
);
188 dprintf ("RegCreateKeyExW: ");
189 dwError
= RegCreateKeyExW(hKey
,
190 L
"Parameters\\Serial001",
199 dprintf ("dwError %x\n", dwError
);
201 dprintf ("RegCreateKeyExW: ");
202 dwError
= RegCreateKeyExW (HKEY_LOCAL_MACHINE
,
203 // L"System\\ControlSet001\\Services\\Serial\\Test",
204 L
"Software\\reactos\\test",
207 REG_OPTION_NON_VOLATILE
,
213 dprintf ("dwError %x ", dwError
);
214 dprintf ("dwDisposition %x\n", dwDisposition
);
215 if (dwError
== ERROR_SUCCESS
)
217 dprintf ("RegSetValueExW: ");
218 dwError
= RegSetValueExW (hKey
,
225 dprintf ("dwError %x\n", dwError
);
226 dprintf ("RegCloseKey: ");
227 dwError
= RegCloseKey (hKey
);
228 dprintf ("dwError %x\n", dwError
);
234 dprintf ("RegCreateKeyExW:\n");
235 dwError
= RegCreateKeyExW (HKEY_LOCAL_MACHINE
,
245 dprintf ("dwError %x ", dwError
);
246 dprintf ("dwDisposition %x\n", dwDisposition
);
249 dprintf ("RegQueryKeyExW:\n");
252 if (dwError
== ERROR_SUCCESS
)
254 dprintf ("RegCloseKey:\n");
255 dwError
= RegCloseKey (hKey
);
256 dprintf ("dwError %x\n", dwError
);
259 dprintf ("\nTests done...\n");