ReactOS 0.4.15-dev-6057-gd708c79
edit.c
Go to the documentation of this file.
1/*
2 * Registry editing UI functions.
3 *
4 * Copyright (C) 2003 Dimitrie O. Paun
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include "regedit.h"
22
23#define NTOS_MODE_USER
24#include <ndk/cmtypes.h>
25
26typedef enum _EDIT_MODE
27{
31
32
33static const WCHAR* editValueName;
41
42void error(HWND hwnd, INT resId, ...)
43{
44 va_list ap;
45 WCHAR title[256];
46 WCHAR errfmt[1024];
47 WCHAR errstr[1024];
49
51
53 wcscpy(title, L"Error");
54
55 if (!LoadStringW(hInstance, resId, errfmt, ARRAY_SIZE(errfmt)))
56 wcscpy(errfmt, L"Unknown error string!");
57
58 va_start(ap, resId);
60 va_end(ap);
61
63}
64
66{
67 WCHAR title[256];
69 wcscpy(title, L"Error");
71}
72
73void warning(HWND hwnd, INT resId, ...)
74{
75 va_list ap;
76 WCHAR title[256];
77 WCHAR errfmt[1024];
78 WCHAR errstr[1024];
80
82
84 wcscpy(title, L"Warning");
85
86 if (!LoadStringW(hInstance, resId, errfmt, ARRAY_SIZE(errfmt)))
87 wcscpy(errfmt, L"Unknown error string!");
88
89 va_start(ap, resId);
91 va_end(ap);
92
94}
95
97{
98 WCHAR* valueData;
99 HWND hwndValue;
100 int len;
101
103
104 switch(uMsg)
105 {
106 case WM_INITDIALOG:
108 {
110 }
111 else
112 {
113 WCHAR buffer[255];
116 }
120 return FALSE;
121 case WM_COMMAND:
122 switch (LOWORD(wParam))
123 {
124 case IDOK:
125 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
126 {
127 if ((len = GetWindowTextLength(hwndValue)))
128 {
129 if (stringValueData)
130 {
131 if ((valueData = HeapReAlloc(GetProcessHeap(), 0, stringValueData, (len + 1) * sizeof(WCHAR))))
132 {
133 stringValueData = valueData;
134 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
135 *stringValueData = 0;
136 }
137 }
138 else
139 {
140 if ((valueData = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR))))
141 {
142 stringValueData = valueData;
143 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
144 *stringValueData = 0;
145 }
146 }
147 }
148 else
149 {
150 if (stringValueData)
151 *stringValueData = 0;
152 }
153 }
154 EndDialog(hwndDlg, IDOK);
155 break;
156 case IDCANCEL:
157 EndDialog(hwndDlg, IDCANCEL);
158 return TRUE;
159 }
160 }
161 return FALSE;
162}
163
164
166{
167 WCHAR* valueData;
168 HWND hwndValue;
169 int len;
170
172
173 switch(uMsg)
174 {
175 case WM_INITDIALOG:
177 {
179 }
180 else
181 {
182 WCHAR buffer[255];
185 }
188 return FALSE;
189 case WM_COMMAND:
190 switch (LOWORD(wParam))
191 {
192 case IDOK:
193 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
194 {
195 if ((len = GetWindowTextLength(hwndValue)))
196 {
197 if (stringValueData)
198 {
199 if ((valueData = HeapReAlloc(GetProcessHeap(), 0, stringValueData, (len + 1) * sizeof(WCHAR))))
200 {
201 stringValueData = valueData;
202 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
203 *stringValueData = 0;
204 }
205 }
206 else
207 {
208 if ((valueData = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR))))
209 {
210 stringValueData = valueData;
211 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
212 *stringValueData = 0;
213 }
214 }
215 }
216 else
217 {
218 if (stringValueData)
219 *stringValueData = 0;
220 }
221 }
222 EndDialog(hwndDlg, IDOK);
223 break;
224 case IDCANCEL:
225 EndDialog(hwndDlg, IDCANCEL);
226 return TRUE;
227 }
228 }
229 return FALSE;
230}
231
232
234{
235 WNDPROC oldwndproc;
236
238
239 switch (uMsg)
240 {
241 case WM_CHAR:
243 {
244 if (isdigit((int) wParam & 0xff) || iscntrl((int) wParam & 0xff))
245 {
246 break;
247 }
248 else
249 {
250 return 0;
251 }
252 }
253 else if (dwordEditMode == EDIT_MODE_HEX)
254 {
255 if (isxdigit((int) wParam & 0xff) || iscntrl((int) wParam & 0xff))
256 {
257 break;
258 }
259 else
260 {
261 return 0;
262 }
263 }
264 else
265 {
266 break;
267 }
268 }
269
270 return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam);
271}
272
273
275{
276 WNDPROC oldproc;
277 HWND hwndValue;
278 WCHAR ValueString[32];
280 DWORD Base;
281 DWORD Value = 0;
282
284
285 switch(uMsg)
286 {
287 case WM_INITDIALOG:
289
290 /* subclass the edit control */
291 hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA);
292 oldproc = (WNDPROC)GetWindowLongPtr(hwndValue, GWLP_WNDPROC);
293 SetWindowLongPtr(hwndValue, GWLP_USERDATA, (DWORD_PTR)oldproc);
295
297 {
299 }
300 else
301 {
302 WCHAR buffer[255];
305 }
307 swprintf(ValueString, L"%lx", dwordValueData);
308 SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, ValueString);
311 return FALSE;
312
313 case WM_COMMAND:
314 switch (LOWORD(wParam))
315 {
316 case IDC_FORMAT_HEX:
318 {
320 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
321 {
322 if (GetWindowTextLength(hwndValue))
323 {
324 if (GetWindowTextW(hwndValue, ValueString, 32))
325 {
326 Value = wcstoul (ValueString, &Remainder, 10);
327 }
328 }
329 }
330 swprintf(ValueString, L"%lx", Value);
331 SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, ValueString);
332 return TRUE;
333 }
334 break;
335
336 case IDC_FORMAT_DEC:
338 {
340 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
341 {
342 if (GetWindowTextLength(hwndValue))
343 {
344 if (GetWindowTextW(hwndValue, ValueString, 32))
345 {
346 Value = wcstoul (ValueString, &Remainder, 16);
347 }
348 }
349 }
350 swprintf(ValueString, L"%lu", Value);
351 SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, ValueString);
352 return TRUE;
353 }
354 break;
355
356 case IDOK:
357 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
358 {
359 if (GetWindowTextLength(hwndValue))
360 {
361 if (!GetWindowTextW(hwndValue, ValueString, 32))
362 {
363 EndDialog(hwndDlg, IDCANCEL);
364 return TRUE;
365 }
366
367 Base = (dwordEditMode == EDIT_MODE_HEX) ? 16 : 10;
368 dwordValueData = wcstoul (ValueString, &Remainder, Base);
369 }
370 else
371 {
372 EndDialog(hwndDlg, IDCANCEL);
373 return TRUE;
374 }
375 }
376 EndDialog(hwndDlg, IDOK);
377 return TRUE;
378
379 case IDCANCEL:
380 EndDialog(hwndDlg, IDCANCEL);
381 return TRUE;
382 }
383 }
384 return FALSE;
385}
386
387
389{
390 HWND hwndValue;
391 UINT len;
392
394
395 switch(uMsg)
396 {
397 case WM_INITDIALOG:
399 {
401 }
402 else
403 {
404 WCHAR buffer[255];
407 }
408 hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA);
410 /* reset the hex edit control's font */
411 SendMessageW(hwndValue, WM_SETFONT, 0, 0);
412 SetFocus(hwndValue);
413 return FALSE;
414 case WM_COMMAND:
415 switch (LOWORD(wParam))
416 {
417 case IDOK:
418 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
419 {
420 len = (UINT) HexEdit_GetBufferSize(hwndValue);
421 if (len > 0 && binValueData)
423 else
427 }
428 EndDialog(hwndDlg, IDOK);
429 break;
430 case IDCANCEL:
431 EndDialog(hwndDlg, IDCANCEL);
432 return TRUE;
433 }
434 }
435 return FALSE;
436}
437
438
440{
441 WCHAR szText[80];
442 RECT rc;
443 LVCOLUMN lvC;
444 HWND hwndLV;
445 INT width;
446
447 /* Create columns. */
448 lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
449 lvC.pszText = szText;
450 lvC.fmt = LVCFMT_LEFT;
451
452 hwndLV = GetDlgItem(hwnd, IDC_DMA_LIST);
454 GetClientRect(hwndLV, &rc);
455
456 /* Load the column labels from the resource file. */
457 lvC.iSubItem = 0;
458 lvC.cx = (rc.right - rc.left) / 2;
459 LoadStringW(hInst, IDS_DMA_CHANNEL, szText, ARRAY_SIZE(szText));
460 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
461 return FALSE;
462
463 lvC.iSubItem = 1;
464 lvC.cx = (rc.right - rc.left) - lvC.cx;
465 LoadStringW(hInst, IDS_DMA_PORT, szText, ARRAY_SIZE(szText));
466 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
467 return FALSE;
468
469
470 /* Interrupt list */
471 hwndLV = GetDlgItem(hwnd, IDC_IRQ_LIST);
473 GetClientRect(hwndLV, &rc);
474 width = (rc.right - rc.left) / 4;
475
476 /* Load the column labels from the resource file. */
477 lvC.iSubItem = 0;
478 lvC.cx = width;
480 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
481 return FALSE;
482
483 lvC.iSubItem = 1;
485 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
486 return FALSE;
487
488 lvC.iSubItem = 2;
490 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
491 return FALSE;
492
493 lvC.iSubItem = 3;
494 lvC.cx = (rc.right - rc.left) - 3 * width;
496 if (ListView_InsertColumn(hwndLV, 3, &lvC) == -1)
497 return FALSE;
498
499
500 /* Memory list */
503 GetClientRect(hwndLV, &rc);
504 width = (rc.right - rc.left) / 3;
505
506 /* Load the column labels from the resource file. */
507 lvC.iSubItem = 0;
508 lvC.cx = width;
510 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
511 return FALSE;
512
513 lvC.iSubItem = 1;
515 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
516 return FALSE;
517
518 lvC.iSubItem = 2;
519 lvC.cx = (rc.right - rc.left) - 2 * width;
521 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
522 return FALSE;
523
524
525 /* Port list */
526 hwndLV = GetDlgItem(hwnd, IDC_PORT_LIST);
528 GetClientRect(hwndLV, &rc);
529 width = (rc.right - rc.left) / 3;
530
531 /* Load the column labels from the resource file. */
532 lvC.iSubItem = 0;
533 lvC.cx = width;
534 LoadStringW(hInst, IDS_PORT_ADDRESS, szText, ARRAY_SIZE(szText));
535 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
536 return FALSE;
537
538 lvC.iSubItem = 1;
539 LoadStringW(hInst, IDS_PORT_LENGTH, szText, ARRAY_SIZE(szText));
540 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
541 return FALSE;
542
543 lvC.iSubItem = 2;
544 lvC.cx = (rc.right - rc.left) - 2 * width;
545 LoadStringW(hInst, IDS_PORT_ACCESS, szText, ARRAY_SIZE(szText));
546 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
547 return FALSE;
548
549 /* Device specific list */
552 GetClientRect(hwndLV, &rc);
553 width = (rc.right - rc.left) / 3;
554
555 /* Load the column labels from the resource file. */
556 lvC.iSubItem = 0;
557 lvC.cx = width;
559 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
560 return FALSE;
561
562 lvC.iSubItem = 1;
564 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
565 return FALSE;
566
567 lvC.iSubItem = 2;
568 lvC.cx = (rc.right - rc.left) - 2 * width;
570 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
571 return FALSE;
572
573 return TRUE;
574}
575
576static VOID
580{
581// LPWSTR lpInterfaceType;
582
583 switch (InterfaceType)
584 {
587// lpInterfaceType = L"Undefined";
588 break;
589 case Internal:
591// lpInterfaceType = L"Internal";
592 break;
593 case Isa:
595// lpInterfaceType = L"Isa";
596 break;
597 case Eisa:
599// lpInterfaceType = L"Eisa";
600 break;
601 case MicroChannel:
603// lpInterfaceType = L"MicroChannel";
604 break;
605 case TurboChannel:
607// lpInterfaceType = L"TurboChannel";
608 break;
609 case PCIBus:
611// lpInterfaceType = L"PCIBus";
612 break;
613 case VMEBus:
615// lpInterfaceType = L"VMEBus";
616 break;
617 case NuBus:
619// lpInterfaceType = L"NuBus";
620 break;
621 case PCMCIABus:
623// lpInterfaceType = L"PCMCIABus";
624 break;
625 case CBus:
627// lpInterfaceType = L"CBus";
628 break;
629 case MPIBus:
631// lpInterfaceType = L"MPIBus";
632 break;
633 case MPSABus:
635// lpInterfaceType = L"MPSABus";
636 break;
639// lpInterfaceType = L"ProcessorInternal";
640 break;
641 case InternalPowerBus:
643// lpInterfaceType = L"InternalPowerBus";
644 break;
645 case PNPISABus:
647// lpInterfaceType = L"PNPISABus";
648 break;
649 case PNPBus:
651// lpInterfaceType = L"PNPBus";
652 break;
653 default:
655// lpInterfaceType = L"Unknown interface type";
656 break;
657 }
658
659// wcscpy(pBuffer, lpInterfaceType);
660}
661
662
663static VOID
665{
666 PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor;
667 PCM_PARTIAL_RESOURCE_LIST pPartialResourceList;
669 ULONG i;
670 HWND hwndLV;
671
672 WCHAR buffer[80];
674 INT iItem;
675
676 pFullDescriptor = &resourceValueData->List[0];
677 for (i = 0; i < fullResourceIndex; i++)
678 {
679 pFullDescriptor = (PVOID)(pFullDescriptor->PartialResourceList.PartialDescriptors +
680 pFullDescriptor->PartialResourceList.Count);
681 }
682 pPartialResourceList = &pFullDescriptor->PartialResourceList;
683
684 /* Interface type */
685 GetInterfaceType(pFullDescriptor->InterfaceType, buffer, 80);
687
688 /* Busnumber */
689 SetDlgItemInt(hwnd, IDC_BUSNUMBER, (UINT)pFullDescriptor->BusNumber, FALSE);
690
691 /* Version */
692 SetDlgItemInt(hwnd, IDC_VERSION, (UINT)pPartialResourceList->Version, FALSE);
693
694 /* Revision */
695 SetDlgItemInt(hwnd, IDC_REVISION, (UINT)pPartialResourceList->Revision, FALSE);
696
697 for (i = 0; i < pPartialResourceList->Count; i++)
698 {
699 pDescriptor = &pPartialResourceList->PartialDescriptors[i];
700
701 switch (pDescriptor->Type)
702 {
704 hwndLV = GetDlgItem(hwnd, IDC_PORT_LIST);
705
706#ifdef _M_AMD64
707 wsprintf(buffer, L"0x%016I64x", pDescriptor->u.Port.Start.QuadPart);
708#else
709 wsprintf(buffer, L"0x%08lx", pDescriptor->u.Port.Start.u.LowPart);
710#endif
711
712 item.mask = LVIF_TEXT | LVIF_PARAM;
713 item.iItem = 1000;
714 item.iSubItem = 0;
715 item.state = 0;
716 item.stateMask = 0;
717 item.pszText = buffer;
718 item.cchTextMax = (int)wcslen(item.pszText);
719 item.lParam = (LPARAM)pDescriptor;
720
721 iItem = ListView_InsertItem(hwndLV, &item);
722 if (iItem != -1)
723 {
724 wsprintf(buffer, L"0x%lx", pDescriptor->u.Port.Length);
725 ListView_SetItemText(hwndLV, iItem, 1, buffer);
726
727 if (pDescriptor->Flags & CM_RESOURCE_PORT_IO)
729 else
731 ListView_SetItemText(hwndLV, iItem, 2, buffer);
732 }
733 break;
734
736 hwndLV = GetDlgItem(hwnd, IDC_IRQ_LIST);
737
738 wsprintf(buffer, L"%lu", pDescriptor->u.Interrupt.Vector);
739
740 item.mask = LVIF_TEXT | LVIF_PARAM;
741 item.iItem = 1000;
742 item.iSubItem = 0;
743 item.state = 0;
744 item.stateMask = 0;
745 item.pszText = buffer;
746 item.cchTextMax = (int)wcslen(item.pszText);
747 item.lParam = (LPARAM)pDescriptor;
748
749 iItem = ListView_InsertItem(hwndLV, &item);
750 if (iItem != -1)
751 {
752 wsprintf(buffer, L"%lu", pDescriptor->u.Interrupt.Level);
753 ListView_SetItemText(hwndLV, iItem, 1, buffer);
754
755 wsprintf(buffer, L"0x%08lx", pDescriptor->u.Interrupt.Affinity);
756 ListView_SetItemText(hwndLV, iItem, 2, buffer);
757
758 if (pDescriptor->Flags & CM_RESOURCE_INTERRUPT_LATCHED)
760 else
762
763 ListView_SetItemText(hwndLV, iItem, 3, buffer);
764 }
765 break;
766
769
770#ifdef _M_AMD64
771 wsprintf(buffer, L"0x%016I64x", pDescriptor->u.Memory.Start.QuadPart);
772#else
773 wsprintf(buffer, L"0x%08lx", pDescriptor->u.Memory.Start.u.LowPart);
774#endif
775
776 item.mask = LVIF_TEXT | LVIF_PARAM;
777 item.iItem = 1000;
778 item.iSubItem = 0;
779 item.state = 0;
780 item.stateMask = 0;
781 item.pszText = buffer;
782 item.cchTextMax = (int)wcslen(item.pszText);
783 item.lParam = (LPARAM)pDescriptor;
784
785 iItem = ListView_InsertItem(hwndLV, &item);
786 if (iItem != -1)
787 {
788 wsprintf(buffer, L"0x%lx", pDescriptor->u.Memory.Length);
789 ListView_SetItemText(hwndLV, iItem, 1, buffer);
790
792 {
795 break;
796
799 break;
800
801 default:
803 break;
804 }
805
806 ListView_SetItemText(hwndLV, iItem, 2, buffer);
807 }
808 break;
809
811 hwndLV = GetDlgItem(hwnd, IDC_DMA_LIST);
812
813 wsprintf(buffer, L"%lu", pDescriptor->u.Dma.Channel);
814
815 item.mask = LVIF_TEXT | LVIF_PARAM;
816 item.iItem = 1000;
817 item.iSubItem = 0;
818 item.state = 0;
819 item.stateMask = 0;
820 item.pszText = buffer;
821 item.cchTextMax = (int)wcslen(item.pszText);
822 item.lParam = (LPARAM)pDescriptor;
823
824 iItem = ListView_InsertItem(hwndLV, &item);
825 if (iItem != -1)
826 {
827 wsprintf(buffer, L"%lu", pDescriptor->u.Dma.Port);
828 ListView_SetItemText(hwndLV, iItem, 1, buffer);
829 }
830 break;
831
834
835 wsprintf(buffer, L"0x%08lx", pDescriptor->u.DeviceSpecificData.Reserved1);
836
837 item.mask = LVIF_TEXT | LVIF_PARAM;
838 item.iItem = 1000;
839 item.iSubItem = 0;
840 item.state = 0;
841 item.stateMask = 0;
842 item.pszText = buffer;
843 item.cchTextMax = (int)wcslen(item.pszText);
844 item.lParam = (LPARAM)pDescriptor;
845
846 iItem = ListView_InsertItem(hwndLV, &item);
847 if (iItem != -1)
848 {
849 wsprintf(buffer, L"0x%08lx", pDescriptor->u.DeviceSpecificData.Reserved2);
850 ListView_SetItemText(hwndLV, iItem, 1, buffer);
851
852 wsprintf(buffer, L"0x%lx", pDescriptor->u.DeviceSpecificData.DataSize);
853 ListView_SetItemText(hwndLV, iItem, 2, buffer);
854 }
855 break;
856 }
857 }
858}
859
860
861static BOOL
863{
864 LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)phdr;
865
866 switch (phdr->idFrom)
867 {
868 case IDC_PORT_LIST:
869 case IDC_MEMORY_LIST:
870 case IDC_DMA_LIST:
871 case IDC_IRQ_LIST:
872 case IDC_DEVICE_LIST:
873 switch(phdr->code)
874 {
875 case NM_CLICK:
876 if (lpnmlv->iItem != -1)
877 {
880
881 item.mask = LVIF_PARAM;
882 item.iItem = lpnmlv->iItem;
883 item.iSubItem = 0;
884
885 if (ListView_GetItem(phdr->hwndFrom, &item))
886 {
887 pDescriptor = (PCM_PARTIAL_RESOURCE_DESCRIPTOR)item.lParam;
888
891
893 (pDescriptor->ShareDisposition == CmResourceShareShared));
894
897
900 }
901 }
902 else
903 {
908 }
909 break;
910 }
911 break;
912 }
913
914 return FALSE;
915}
916
917
919{
921
922 switch(uMsg)
923 {
924 case WM_INITDIALOG:
925 CreateResourceColumns(hwndDlg);
926 ParseResources(hwndDlg);
927 return FALSE;
928
929 case WM_NOTIFY:
930 return OnResourceNotify(hwndDlg, (NMHDR *)lParam);
931
932 case WM_COMMAND:
933 switch (LOWORD(wParam))
934 {
935 case IDOK:
936 EndDialog(hwndDlg, IDOK);
937 break;
938 case IDCANCEL:
939 EndDialog(hwndDlg, IDCANCEL);
940 return TRUE;
941 }
942 }
943 return FALSE;
944}
945
947{
948 WCHAR szText[80];
949 RECT rc;
950 LVCOLUMN lvC;
951
953
954 GetClientRect(hWndListView, &rc);
955
956 /* Create columns. */
957 lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
958 lvC.pszText = szText;
959 lvC.fmt = LVCFMT_LEFT;
960
961 /* Load the column labels from the resource file. */
962 lvC.iSubItem = 0;
963 lvC.cx = (rc.right - rc.left) / 2;
964 LoadStringW(hInst, IDS_BUSNUMBER, szText, ARRAY_SIZE(szText));
965 if (ListView_InsertColumn(hWndListView, 0, &lvC) == -1)
966 return FALSE;
967
968 lvC.iSubItem = 1;
969 lvC.cx = (rc.right - rc.left) - lvC.cx;
970 LoadStringW(hInst, IDS_INTERFACE, szText, ARRAY_SIZE(szText));
971 if (ListView_InsertColumn(hWndListView, 1, &lvC) == -1)
972 return FALSE;
973
974 return TRUE;
975}
976
978{
979 PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor;
980 WCHAR buffer[80];
982 ULONG i;
983 INT iItem;
984
985 pFullDescriptor = &resourceValueData->List[0];
986 for (i = 0; i < resourceValueData->Count; i++)
987 {
988 wsprintf(buffer, L"%lu", pFullDescriptor->BusNumber);
989
990 item.mask = LVIF_TEXT;
991 item.iItem = i;
992 item.iSubItem = 0;
993 item.state = 0;
994 item.stateMask = 0;
995 item.pszText = buffer;
996 item.cchTextMax = (int)wcslen(item.pszText);
997
998 iItem = ListView_InsertItem(hwnd, &item);
999 if (iItem != -1)
1000 {
1001 GetInterfaceType(pFullDescriptor->InterfaceType, buffer, 80);
1002 ListView_SetItemText(hwnd, iItem, 1, buffer);
1003 }
1004 pFullDescriptor = (PVOID)(pFullDescriptor->PartialResourceList.PartialDescriptors +
1005 pFullDescriptor->PartialResourceList.Count);
1006 }
1007}
1008
1009static BOOL
1011{
1012 LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)phdr;
1013
1014 switch (phdr->idFrom)
1015 {
1016 case IDC_RESOURCE_LIST:
1017 switch(phdr->code)
1018 {
1019 case NM_CLICK:
1020 fullResourceIndex = lpnmlv->iItem;
1021 EnableWindow(GetDlgItem(hwndDlg, IDC_SHOW_RESOURCE), (lpnmlv->iItem != -1));
1022 break;
1023
1024 case NM_DBLCLK:
1025 if (lpnmlv->iItem != -1)
1026 {
1027 fullResourceIndex = lpnmlv->iItem;
1029 }
1030 break;
1031 }
1032 break;
1033 }
1034
1035 return FALSE;
1036}
1037
1038
1040{
1042
1043 switch(uMsg)
1044 {
1045 case WM_INITDIALOG:
1048 return FALSE;
1049
1050 case WM_NOTIFY:
1051 return OnResourceListNotify(hwndDlg, (NMHDR *)lParam);
1052
1053 case WM_COMMAND:
1054 switch (LOWORD(wParam))
1055 {
1056 case IDC_SHOW_RESOURCE:
1057 if (fullResourceIndex != -1)
1059 break;
1060 case IDOK:
1061 EndDialog(hwndDlg, IDOK);
1062 break;
1063 case IDCANCEL:
1064 EndDialog(hwndDlg, IDCANCEL);
1065 return TRUE;
1066 }
1067 }
1068 return FALSE;
1069}
1070
1071
1073{
1074 DWORD type;
1075 LONG lRet;
1076 BOOL result = FALSE;
1077
1078 if (!hKey)
1079 return FALSE;
1080
1081 editValueName = valueName;
1082
1083 lRet = RegQueryValueExW(hKey, valueName, 0, &type, 0, &valueDataLen);
1084 if (lRet != ERROR_SUCCESS && (valueName == NULL || !valueName[0]))
1085 {
1086 lRet = ERROR_SUCCESS; /* Allow editing of (Default) values which don't exist */
1087 type = REG_SZ;
1088 valueDataLen = 0;
1091 }
1092
1093 if (lRet != ERROR_SUCCESS)
1094 {
1095 error(hwnd, IDS_BAD_VALUE, valueName);
1096 goto done;
1097 }
1098
1099 if (EditBin == FALSE && ((type == REG_SZ) || (type == REG_EXPAND_SZ)))
1100 {
1101 if (valueDataLen > 0)
1102 {
1104 {
1106 goto done;
1107 }
1108 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)stringValueData, &valueDataLen);
1109 if (lRet != ERROR_SUCCESS)
1110 {
1111 error(hwnd, IDS_BAD_VALUE, valueName);
1112 goto done;
1113 }
1114 }
1115 else
1116 {
1118 }
1119
1121 {
1122 if (stringValueData)
1123 {
1124 lRet = RegSetValueExW(hKey, valueName, 0, type, (LPBYTE)stringValueData, (DWORD) (wcslen(stringValueData) + 1) * sizeof(WCHAR));
1125 }
1126 else
1127 {
1128 lRet = RegSetValueExW(hKey, valueName, 0, type, NULL, 0);
1129 }
1130 if (lRet == ERROR_SUCCESS)
1131 result = TRUE;
1132 }
1133 }
1134 else if (EditBin == FALSE && type == REG_MULTI_SZ)
1135 {
1136 if (valueDataLen > 0)
1137 {
1138 size_t llen, listlen, nl_len;
1139 LPWSTR src, lines = NULL;
1140
1142 {
1144 goto done;
1145 }
1146 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)stringValueData, &valueDataLen);
1147 if (lRet != ERROR_SUCCESS)
1148 {
1149 error(hwnd, IDS_BAD_VALUE, valueName);
1150 goto done;
1151 }
1152
1153 /* convert \0 to \r\n */
1155 nl_len = wcslen(L"\r\n") * sizeof(WCHAR);
1156 listlen = sizeof(WCHAR);
1157 lines = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, listlen + sizeof(WCHAR));
1158 while(*src != L'\0')
1159 {
1160 llen = wcslen(src);
1161 if(llen == 0)
1162 break;
1163 listlen += (llen * sizeof(WCHAR)) + nl_len;
1165 wcscat(lines, src);
1166 wcscat(lines, L"\r\n");
1167 src += llen + 1;
1168 }
1171 }
1172 else
1173 {
1175 }
1176
1178 {
1179 if (stringValueData)
1180 {
1181 /* convert \r\n to \0 */
1182 BOOL EmptyLines = FALSE;
1183 LPWSTR src, lines, nl;
1184 size_t linechars, buflen, c_nl, dest;
1185
1187 buflen = sizeof(WCHAR);
1188 lines = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buflen + sizeof(WCHAR));
1189 c_nl = wcslen(L"\r\n");
1190 dest = 0;
1191 while(*src != L'\0')
1192 {
1193 if((nl = wcsstr(src, L"\r\n")))
1194 {
1195 linechars = nl - src;
1196 if(nl == src)
1197 {
1198 EmptyLines = TRUE;
1199 src = nl + c_nl;
1200 continue;
1201 }
1202 }
1203 else
1204 {
1205 linechars = wcslen(src);
1206 }
1207 if(linechars > 0)
1208 {
1209 buflen += ((linechars + 1) * sizeof(WCHAR));
1211 memcpy((lines + dest), src, linechars * sizeof(WCHAR));
1212 dest += linechars;
1213 lines[dest++] = L'\0';
1214 }
1215 else
1216 {
1217 EmptyLines = TRUE;
1218 }
1219 src += linechars + (nl != NULL ? c_nl : 0);
1220 }
1221 lines[++dest] = L'\0';
1222
1223 if(EmptyLines)
1224 {
1226 }
1227
1228 lRet = RegSetValueExW(hKey, valueName, 0, type, (LPBYTE)lines, (DWORD) buflen);
1230 }
1231 else
1232 {
1233 lRet = RegSetValueExW(hKey, valueName, 0, type, NULL, 0);
1234 }
1235 if (lRet == ERROR_SUCCESS)
1236 result = TRUE;
1237 }
1238 }
1239 else if (EditBin == FALSE && type == REG_DWORD)
1240 {
1241 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)&dwordValueData, &valueDataLen);
1242 if (lRet != ERROR_SUCCESS)
1243 {
1244 error(hwnd, IDS_BAD_VALUE, valueName);
1245 goto done;
1246 }
1247
1249 {
1250 lRet = RegSetValueExW(hKey, valueName, 0, type, (LPBYTE)&dwordValueData, sizeof(DWORD));
1251 if (lRet == ERROR_SUCCESS)
1252 result = TRUE;
1253 }
1254 }
1255 else if (EditBin == FALSE && type == REG_RESOURCE_LIST)
1256 {
1257 if (valueDataLen > 0)
1258 {
1260 if (resourceValueData == NULL)
1261 {
1263 goto done;
1264 }
1265
1266 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)resourceValueData, &valueDataLen);
1267 if (lRet != ERROR_SUCCESS)
1268 {
1269 error(hwnd, IDS_BAD_VALUE, valueName);
1270 goto done;
1271 }
1272 }
1273 else
1274 {
1276 }
1277
1279 {
1280 }
1281 }
1282 else if (EditBin == FALSE && type == REG_FULL_RESOURCE_DESCRIPTOR)
1283 {
1284 if (valueDataLen > 0)
1285 {
1287 if (resourceValueData == NULL)
1288 {
1290 goto done;
1291 }
1292
1293 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)&resourceValueData->List[0], &valueDataLen);
1294 if (lRet != ERROR_SUCCESS)
1295 {
1296 error(hwnd, IDS_BAD_VALUE, valueName);
1297 goto done;
1298 }
1299
1302 }
1303 else
1304 {
1306 }
1307
1309 {
1310 }
1311 }
1312 else if ((EditBin != FALSE) || (type == REG_NONE) || (type == REG_BINARY))
1313 {
1314 if(valueDataLen > 0)
1315 {
1317 {
1319 goto done;
1320 }
1321
1322 /* Use the unicode version, so editing strings in binary mode is correct */
1323 lRet = RegQueryValueExW(hKey, valueName,
1325 if (lRet != ERROR_SUCCESS)
1326 {
1328 error(hwnd, IDS_BAD_VALUE, valueName);
1329 goto done;
1330 }
1331 }
1332 else
1333 {
1335 }
1336
1338 {
1339 /* Use the unicode version, so editing strings in binary mode is correct */
1340 lRet = RegSetValueExW(hKey, valueName,
1342 if (lRet == ERROR_SUCCESS)
1343 result = TRUE;
1344 }
1345 if(binValueData != NULL)
1347 }
1348 else
1349 {
1351 }
1352
1353done:
1357
1358 if (stringValueData)
1361
1362 return result;
1363}
1364
1365static LONG CopyKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
1366{
1367 LONG lResult;
1368 DWORD dwDisposition;
1369 HKEY hDestSubKey = NULL;
1370 HKEY hSrcSubKey = NULL;
1371 DWORD dwIndex, dwType, cbName, cbData;
1372 WCHAR szSubKey[256];
1373 WCHAR szValueName[256];
1374 BYTE szValueData[512];
1375
1376 FILETIME ft;
1377
1378 /* open the source subkey, if specified */
1379 if (lpSrcSubKey)
1380 {
1381 lResult = RegOpenKeyExW(hSrcKey, lpSrcSubKey, 0, KEY_ALL_ACCESS, &hSrcSubKey);
1382 if (lResult)
1383 goto done;
1384 hSrcKey = hSrcSubKey;
1385 }
1386
1387 /* create the destination subkey */
1388 lResult = RegCreateKeyExW(hDestKey, lpDestSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL,
1389 &hDestSubKey, &dwDisposition);
1390 if (lResult)
1391 goto done;
1392
1393 /* copy all subkeys */
1394 dwIndex = 0;
1395 do
1396 {
1397 cbName = sizeof(szSubKey) / sizeof(szSubKey[0]);
1398 lResult = RegEnumKeyExW(hSrcKey, dwIndex++, szSubKey, &cbName, NULL, NULL, NULL, &ft);
1399 if (lResult == ERROR_SUCCESS)
1400 {
1401 lResult = CopyKey(hDestSubKey, szSubKey, hSrcKey, szSubKey);
1402 if (lResult)
1403 goto done;
1404 }
1405 }
1406 while(lResult == ERROR_SUCCESS);
1407
1408 /* copy all subvalues */
1409 dwIndex = 0;
1410 do
1411 {
1412 cbName = sizeof(szValueName) / sizeof(szValueName[0]);
1413 cbData = sizeof(szValueData) / sizeof(szValueData[0]);
1414 lResult = RegEnumValueW(hSrcKey, dwIndex++, szValueName, &cbName, NULL, &dwType, szValueData, &cbData);
1415 if (lResult == ERROR_SUCCESS)
1416 {
1417 lResult = RegSetValueExW(hDestSubKey, szValueName, 0, dwType, szValueData, cbData);
1418 if (lResult)
1419 goto done;
1420 }
1421 }
1422 while(lResult == ERROR_SUCCESS);
1423
1424 lResult = ERROR_SUCCESS;
1425
1426done:
1427 if (hSrcSubKey)
1428 RegCloseKey(hSrcSubKey);
1429 if (hDestSubKey)
1430 RegCloseKey(hDestSubKey);
1431 if (lResult != ERROR_SUCCESS)
1432 SHDeleteKey(hDestKey, lpDestSubKey);
1433 return lResult;
1434}
1435
1436static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
1437{
1438 LONG lResult;
1439
1440 if (!lpSrcSubKey)
1442
1443 if (_wcsicmp(lpDestSubKey, lpSrcSubKey) == 0)
1444 {
1445 /* Destination name equals source name */
1446 return ERROR_SUCCESS;
1447 }
1448
1449 lResult = CopyKey(hDestKey, lpDestSubKey, hSrcKey, lpSrcSubKey);
1450 if (lResult == ERROR_SUCCESS)
1451 SHDeleteKey(hSrcKey, lpSrcSubKey);
1452
1453 return lResult;
1454}
1455
1456BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
1457{
1458 WCHAR msg[128], caption[128];
1459 BOOL result = FALSE;
1460 LONG lRet;
1461 HKEY hKey;
1462
1463 lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_READ|KEY_SET_VALUE, &hKey);
1464 if (lRet != ERROR_SUCCESS)
1465 {
1467 return FALSE;
1468 }
1469
1472
1474 goto done;
1475
1476 lRet = SHDeleteKey(hKeyRoot, keyPath);
1477 if (lRet != ERROR_SUCCESS)
1478 {
1479 error(hwnd, IDS_BAD_KEY, keyPath);
1480 goto done;
1481 }
1482 result = TRUE;
1483
1484done:
1486 return result;
1487}
1488
1489LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName)
1490{
1491 LPCWSTR s;
1492 LPWSTR lpNewSubKey = NULL;
1493 LONG Ret = 0;
1494
1495 if (!lpSubKey)
1496 return Ret;
1497
1498 s = wcsrchr(lpSubKey, L'\\');
1499 if (s)
1500 {
1501 s++;
1502 lpNewSubKey = (LPWSTR) HeapAlloc(GetProcessHeap(), 0, (s - lpSubKey + wcslen(lpNewName) + 1) * sizeof(WCHAR));
1503 if (lpNewSubKey != NULL)
1504 {
1505 memcpy(lpNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(WCHAR));
1506 wcscpy(lpNewSubKey + (s - lpSubKey), lpNewName);
1507 lpNewName = lpNewSubKey;
1508 }
1509 else
1511 }
1512
1513 Ret = MoveKey(hKey, lpNewName, hKey, lpSubKey);
1514
1515 if (lpNewSubKey)
1516 {
1517 HeapFree(GetProcessHeap(), 0, lpNewSubKey);
1518 }
1519 return Ret;
1520}
1521
1522LONG RenameValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpDestValue, LPCWSTR lpSrcValue)
1523{
1524 LONG lResult;
1525 HKEY hSubKey = NULL;
1526 DWORD dwType, cbData;
1527 BYTE data[512];
1528
1529 if (lpSubKey)
1530 {
1531 lResult = RegOpenKeyW(hKey, lpSubKey, &hSubKey);
1532 if (lResult != ERROR_SUCCESS)
1533 goto done;
1534 hKey = hSubKey;
1535 }
1536
1537 cbData = sizeof(data);
1538 lResult = RegQueryValueExW(hKey, lpSrcValue, NULL, &dwType, data, &cbData);
1539 if (lResult != ERROR_SUCCESS)
1540 goto done;
1541
1542 lResult = RegSetValueExW(hKey, lpDestValue, 0, dwType, data, cbData);
1543 if (lResult != ERROR_SUCCESS)
1544 goto done;
1545
1546 RegDeleteValue(hKey, lpSrcValue);
1547
1548done:
1549 if (hSubKey)
1550 RegCloseKey(hSubKey);
1551 return lResult;
1552}
1553
1554LONG QueryStringValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR pszBuffer, DWORD dwBufferLen)
1555{
1556 LONG lResult;
1557 HKEY hSubKey = NULL;
1558 DWORD cbData, dwType;
1559
1560 if (lpSubKey)
1561 {
1562 lResult = RegOpenKeyW(hKey, lpSubKey, &hSubKey);
1563 if (lResult != ERROR_SUCCESS)
1564 goto done;
1565 hKey = hSubKey;
1566 }
1567
1568 cbData = (dwBufferLen - 1) * sizeof(*pszBuffer);
1569 lResult = RegQueryValueExW(hKey, lpValueName, NULL, &dwType, (LPBYTE) pszBuffer, &cbData);
1570 if (lResult != ERROR_SUCCESS)
1571 goto done;
1572 if (dwType != REG_SZ)
1573 {
1574 lResult = -1;
1575 goto done;
1576 }
1577
1578 pszBuffer[cbData / sizeof(*pszBuffer)] = L'\0';
1579
1580done:
1581 if (lResult != ERROR_SUCCESS)
1582 pszBuffer[0] = L'\0';
1583 if (hSubKey)
1584 RegCloseKey(hSubKey);
1585 return lResult;
1586}
1587
1588BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
1589{
1590 LPCWSTR pszRootKey;
1591
1592 if (hRootKey == HKEY_CLASSES_ROOT)
1593 pszRootKey = L"HKEY_CLASSES_ROOT";
1594 else if (hRootKey == HKEY_CURRENT_USER)
1595 pszRootKey = L"HKEY_CURRENT_USER";
1596 else if (hRootKey == HKEY_LOCAL_MACHINE)
1597 pszRootKey = L"HKEY_LOCAL_MACHINE";
1598 else if (hRootKey == HKEY_USERS)
1599 pszRootKey = L"HKEY_USERS";
1600 else if (hRootKey == HKEY_CURRENT_CONFIG)
1601 pszRootKey = L"HKEY_CURRENT_CONFIG";
1602 else if (hRootKey == HKEY_DYN_DATA)
1603 pszRootKey = L"HKEY_DYN_DATA";
1604 else
1605 return FALSE;
1606
1607 if (lpSubKey[0])
1608 _snwprintf(pszDest, iDestLength, L"%s\\%s", pszRootKey, lpSubKey);
1609 else
1610 _snwprintf(pszDest, iDestLength, L"%s", pszRootKey);
1611 return TRUE;
1612}
#define isdigit(c)
Definition: acclib.h:68
#define isxdigit(c)
Definition: acclib.h:70
char * va_list
Definition: acmsvcex.h:78
#define va_end(ap)
Definition: acmsvcex.h:90
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define msg(x)
Definition: auth_time.c:54
#define IDS_ERROR
Definition: resource.h:18
#define IDS_BAD_VALUE
Definition: resource.h:11
ChildWnd * g_pChildWnd
Definition: childwnd.c:23
static WCHAR * stringValueData
Definition: edit.c:34
static PCM_RESOURCE_LIST resourceValueData
Definition: edit.c:37
static VOID GetInterfaceType(INTERFACE_TYPE InterfaceType, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:577
static EDIT_MODE dwordEditMode
Definition: edit.c:40
INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:96
static DWORD valueDataLen
Definition: edit.c:39
static INT fullResourceIndex
Definition: edit.c:38
static BOOL OnResourceNotify(HWND hwndDlg, NMHDR *phdr)
Definition: edit.c:862
_EDIT_MODE
Definition: edit.c:27
@ EDIT_MODE_HEX
Definition: edit.c:29
@ EDIT_MODE_DEC
Definition: edit.c:28
BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCWSTR valueName, BOOL EditBin)
Definition: edit.c:1072
static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
Definition: edit.c:1436
static INT_PTR CALLBACK modify_resource_list_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1039
BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
Definition: edit.c:1456
static DWORD dwordValueData
Definition: edit.c:36
static const WCHAR * editValueName
Definition: edit.c:33
static INT_PTR CALLBACK modify_resource_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:918
static BOOL CreateResourceColumns(HWND hwnd)
Definition: edit.c:439
static void error_code_messagebox(HWND hwnd, DWORD error_code)
Definition: edit.c:65
static VOID AddFullResourcesToList(HWND hwnd)
Definition: edit.c:977
enum _EDIT_MODE EDIT_MODE
static PVOID binValueData
Definition: edit.c:35
LONG RenameValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpDestValue, LPCWSTR lpSrcValue)
Definition: edit.c:1522
LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName)
Definition: edit.c:1489
LONG QueryStringValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR pszBuffer, DWORD dwBufferLen)
Definition: edit.c:1554
INT_PTR CALLBACK modify_multi_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:165
LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:233
static VOID ParseResources(HWND hwnd)
Definition: edit.c:664
static BOOL OnResourceListNotify(HWND hwndDlg, NMHDR *phdr)
Definition: edit.c:1010
INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:274
BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
Definition: edit.c:1588
INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:388
static LONG CopyKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
Definition: edit.c:1365
static BOOL CreateResourceListColumns(HWND hWndListView)
Definition: edit.c:946
int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode,...)
Definition: error.c:24
#define ARRAY_SIZE(A)
Definition: main.h:33
#define IDS_INTERRUPT_TYPE
Definition: resource.h:209
#define IDS_INTERRUPT_VECTOR
Definition: resource.h:206
#define IDC_DEVICE_EXCLUSIVE
Definition: resource.h:286
#define IDS_BUS_PCMCIABUS
Definition: resource.h:237
#define IDS_SPECIFIC_RESERVED2
Definition: resource.h:217
#define IDS_BUS_UNDEFINED
Definition: resource.h:228
#define IDS_BUS_NUBUS
Definition: resource.h:236
#define IDC_UNDETERMINED
Definition: resource.h:284
#define IDS_PORT_LENGTH
Definition: resource.h:214
#define IDC_FORMAT_DEC
Definition: resource.h:253
#define IDS_QUERY_DELETE_KEY_ONE
Definition: resource.h:153
#define IDS_WARNING
Definition: resource.h:123
#define IDS_BAD_KEY
Definition: resource.h:142
#define IDS_MEMORY_LENGTH
Definition: resource.h:211
#define IDD_EDIT_RESOURCE
Definition: resource.h:278
#define IDS_DMA_PORT
Definition: resource.h:205
#define IDS_BUS_PNPISABUS
Definition: resource.h:243
#define IDC_REVISION
Definition: resource.h:291
#define IDS_BUS_TURBOCHANNEL
Definition: resource.h:233
#define IDS_MEMORY_ADDRESS
Definition: resource.h:210
#define IDS_PORT_ACCESS
Definition: resource.h:215
#define IDS_MEMORY_ACCESS
Definition: resource.h:212
#define IDS_BUS_MICROCHANNEL
Definition: resource.h:232
#define IDS_BUS_EISA
Definition: resource.h:231
#define IDS_SPECIFIC_RESERVED1
Definition: resource.h:216
#define IDS_BUSNUMBER
Definition: resource.h:201
#define IDS_BUS_PROCESSORINTERNAL
Definition: resource.h:241
#define IDC_VERSION
Definition: resource.h:290
#define IDC_PORT_LIST
Definition: resource.h:282
#define IDC_VALUE_DATA
Definition: resource.h:249
#define IDD_EDIT_MULTI_STRING
Definition: resource.h:255
#define IDC_IRQ_LIST
Definition: resource.h:280
#define IDS_BUS_CBUS
Definition: resource.h:238
#define IDC_DEVICE_LIST
Definition: resource.h:283
#define IDS_PORT_ADDRESS
Definition: resource.h:213
#define IDS_BUS_MPSABUS
Definition: resource.h:240
#define IDS_TOO_BIG_VALUE
Definition: resource.h:121
#define IDD_EDIT_STRING
Definition: resource.h:247
#define IDS_QUERY_DELETE_KEY_CONFIRM
Definition: resource.h:155
#define IDC_BUSNUMBER
Definition: resource.h:289
#define IDC_INTERFACETYPE
Definition: resource.h:288
#define IDS_BUS_INTERNALPOWERBUS
Definition: resource.h:242
#define IDS_BUS_PCIBUS
Definition: resource.h:234
#define IDD_EDIT_BIN_DATA
Definition: resource.h:256
#define IDD_EDIT_RESOURCE_LIST
Definition: resource.h:274
#define IDS_BUS_MPIBUS
Definition: resource.h:239
#define IDS_BUS_PNPBUS
Definition: resource.h:244
#define IDC_VALUE_NAME
Definition: resource.h:248
#define IDS_DEFAULT_VALUE_NAME
Definition: resource.h:126
#define IDS_BUS_INTERNAL
Definition: resource.h:229
#define IDS_BUS_VMEBUS
Definition: resource.h:235
#define IDS_BUS_UNKNOWNTYPE
Definition: resource.h:245
#define IDS_INTERRUPT_EDGE_SENSITIVE
Definition: resource.h:222
#define IDS_MEMORY_READ_WRITE
Definition: resource.h:226
#define IDS_MULTI_SZ_EMPTY_STRING
Definition: resource.h:124
#define IDC_SHARED
Definition: resource.h:285
#define IDS_BUS_ISA
Definition: resource.h:230
#define IDS_INTERFACE
Definition: resource.h:202
#define IDS_INTERRUPT_AFFINITY
Definition: resource.h:208
#define IDC_SHOW_RESOURCE
Definition: resource.h:276
#define IDS_INTERRUPT_LEVEL_SENSITIVE
Definition: resource.h:223
#define IDS_MEMORY_READ_ONLY
Definition: resource.h:224
#define IDS_PORT_PORT_IO
Definition: resource.h:220
#define IDS_PORT_MEMORY_IO
Definition: resource.h:221
#define IDC_DMA_LIST
Definition: resource.h:279
#define IDS_UNSUPPORTED_TYPE
Definition: resource.h:120
#define IDC_RESOURCE_LIST
Definition: resource.h:275
#define IDD_EDIT_DWORD
Definition: resource.h:251
#define IDS_INTERRUPT_LEVEL
Definition: resource.h:207
#define IDS_MEMORY_WRITE_ONLY
Definition: resource.h:225
#define IDS_SPECIFIC_DATASIZE
Definition: resource.h:218
#define IDC_FORMAT_HEX
Definition: resource.h:252
#define IDC_DRIVER_EXCLUSIVE
Definition: resource.h:287
#define IDC_MEMORY_LIST
Definition: resource.h:281
#define IDS_DMA_CHANNEL
Definition: resource.h:204
#define RegCloseKey(hKey)
Definition: registry.h:47
HINSTANCE hInstance
Definition: charmap.c:19
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define ERROR_INVALID_FUNCTION
Definition: dderror.h:6
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1091
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3353
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2524
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3288
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4897
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2850
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4118
#define GetProcessHeap()
Definition: compat.h:736
#define wcsrchr
Definition: compat.h:16
#define HeapAlloc
Definition: compat.h:733
#define HeapReAlloc
Definition: compat.h:734
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CALLBACK
Definition: compat.h:35
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
static DWORD DWORD * dwLength
Definition: fusion.c:86
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
#define swprintf
Definition: precomp.h:40
HINSTANCE hInst
Definition: dxdiag.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble s
Definition: gl.h:2039
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei width
Definition: gl.h:1546
GLenum src
Definition: glext.h:6340
GLuint buffer
Definition: glext.h:5915
GLenum GLsizei len
Definition: glext.h:6722
GLuint64EXT * result
Definition: glext.h:11304
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define HexEdit_LoadBuffer(hWnd, Buffer, Size)
Definition: hexedit.h:24
#define HexEdit_GetBufferSize(hWnd)
Definition: hexedit.h:33
#define HexEdit_CopyBuffer(hWnd, Buffer, nMax)
Definition: hexedit.h:30
#define CmResourceTypeMemory
Definition: hwresource.cpp:125
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR * PCM_PARTIAL_RESOURCE_DESCRIPTOR
#define CmResourceTypeDma
Definition: hwresource.cpp:126
#define CmResourceTypeDeviceSpecific
Definition: hwresource.cpp:127
@ Eisa
Definition: hwresource.cpp:139
@ VMEBus
Definition: hwresource.cpp:143
@ InterfaceTypeUndefined
Definition: hwresource.cpp:136
@ CBus
Definition: hwresource.cpp:146
@ TurboChannel
Definition: hwresource.cpp:141
@ PNPBus
Definition: hwresource.cpp:152
@ PCIBus
Definition: hwresource.cpp:142
@ MPIBus
Definition: hwresource.cpp:147
@ InternalPowerBus
Definition: hwresource.cpp:150
@ MPSABus
Definition: hwresource.cpp:148
@ Internal
Definition: hwresource.cpp:137
@ NuBus
Definition: hwresource.cpp:144
@ MicroChannel
Definition: hwresource.cpp:140
@ PNPISABus
Definition: hwresource.cpp:151
@ ProcessorInternal
Definition: hwresource.cpp:149
@ Isa
Definition: hwresource.cpp:138
@ PCMCIABus
Definition: hwresource.cpp:145
enum _INTERFACE_TYPE INTERFACE_TYPE
#define CmResourceTypePort
Definition: hwresource.cpp:123
#define CmResourceTypeInterrupt
Definition: hwresource.cpp:124
_Check_return_ _CRTIMP int __cdecl iscntrl(_In_ int _C)
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
#define REG_SZ
Definition: layer.c:22
#define error(str)
Definition: mkdosfs.c:1605
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
static char * dest
Definition: rtl.c:135
static ATOM item
Definition: dde.c:856
unsigned int UINT
Definition: ndis.h:50
#define CM_RESOURCE_PORT_IO
Definition: cmtypes.h:109
#define CM_RESOURCE_MEMORY_READ_ONLY
Definition: cmtypes.h:121
#define CM_RESOURCE_MEMORY_WRITE_ONLY
Definition: cmtypes.h:122
#define CM_RESOURCE_INTERRUPT_LATCHED
Definition: cmtypes.h:144
_In_opt_ ULONG Base
Definition: rtlfuncs.h:2427
#define REG_BINARY
Definition: nt_native.h:1496
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
#define KEY_READ
Definition: nt_native.h:1023
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define REG_RESOURCE_LIST
Definition: nt_native.h:1502
#define REG_MULTI_SZ
Definition: nt_native.h:1501
#define KEY_WRITE
Definition: nt_native.h:1031
#define REG_NONE
Definition: nt_native.h:1492
#define REG_EXPAND_SZ
Definition: nt_native.h:1494
#define KEY_SET_VALUE
Definition: nt_native.h:1017
#define REG_FULL_RESOURCE_DESCRIPTOR
Definition: nt_native.h:1503
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
long LONG
Definition: pedump.c:60
static char title[]
Definition: ps.c:92
#define ListView_InsertItem(hwnd, pitem)
Definition: commctrl.h:2408
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2636
#define NM_DBLCLK
Definition: commctrl.h:131
#define LVCF_WIDTH
Definition: commctrl.h:2587
#define NM_CLICK
Definition: commctrl.h:130
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2734
#define ListView_SetExtendedListViewStyle(hwndLV, dw)
Definition: commctrl.h:2725
#define LVIF_PARAM
Definition: commctrl.h:2311
struct tagNMLISTVIEW * LPNMLISTVIEW
#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_)
Definition: commctrl.h:2691
#define LVIF_TEXT
Definition: commctrl.h:2309
#define LVCF_FMT
Definition: commctrl.h:2586
#define LVCF_SUBITEM
Definition: commctrl.h:2589
#define LVCFMT_LEFT
Definition: commctrl.h:2598
#define LVCF_TEXT
Definition: commctrl.h:2588
#define ListView_GetItem(hwnd, pitem)
Definition: commctrl.h:2394
#define LVCOLUMN
Definition: commctrl.h:2581
PVOID pBuffer
#define WM_NOTIFY
Definition: richedit.h:61
#define REG_DWORD
Definition: sdbapi.c:596
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define warning(s)
Definition: debug.h:83
#define SHDeleteKey
Definition: shlwapi.h:44
HWND hWnd
Definition: main.h:62
CM_PARTIAL_RESOURCE_LIST PartialResourceList
Definition: hwresource.cpp:160
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@387 Dma
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@390 DeviceSpecificData
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@386 Memory
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@383 Port
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@381::@384 Interrupt
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
Definition: hwresource.cpp:119
CM_FULL_RESOURCE_DESCRIPTOR List[1]
Definition: hwresource.cpp:165
UINT_PTR idFrom
Definition: winuser.h:3148
UINT code
Definition: winuser.h:3149
HWND hwndFrom
Definition: winuser.h:3147
LONG right
Definition: windef.h:308
LONG left
Definition: windef.h:306
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define GWLP_WNDPROC
Definition: treelist.c:66
#define GWLP_USERDATA
Definition: treelist.c:63
eMaj lines
Definition: tritemp.h:206
int32_t INT_PTR
Definition: typedefs.h:64
uint32_t DWORD_PTR
Definition: typedefs.h:65
unsigned char * LPBYTE
Definition: typedefs.h:53
void * PVOID
Definition: typedefs.h:50
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
Definition: wdffdo.h:463
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
static int error_code[8]
Definition: odbccp32.c:61
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1412
const char * errstr(int errcode)
#define GetModuleHandle
Definition: winbase.h:3698
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
void int int ULONGLONG int va_list * ap
Definition: winesup.h:36
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HKEY_CURRENT_CONFIG
Definition: winreg.h:15
#define HKEY_DYN_DATA
Definition: winreg.h:16
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define RegDeleteValue
Definition: winreg.h:508
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
#define HKEY_USERS
Definition: winreg.h:13
#define IDCANCEL
Definition: winuser.h:825
#define GetWindowTextLength
Definition: winuser.h:5789
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define DialogBoxW(i, t, p, f)
Definition: winuser.h:4389
#define WM_COMMAND
Definition: winuser.h:1730
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
#define WM_INITDIALOG
Definition: winuser.h:1729
#define MB_YESNO
Definition: winuser.h:811
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:824
#define MB_ICONERROR
Definition: winuser.h:781
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define WM_SETFONT
Definition: winuser.h:1640
#define SendMessage
Definition: winuser.h:5833
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define EM_SETSEL
Definition: winuser.h:2008
#define MB_OK
Definition: winuser.h:784
#define wsprintf
Definition: winuser.h:5855
#define WM_CHAR
Definition: winuser.h:1707
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
#define MB_ICONQUESTION
Definition: winuser.h:783
#define MB_ICONSTOP
Definition: winuser.h:797
#define BN_CLICKED
Definition: winuser.h:1915
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2896
#define IDYES
Definition: winuser.h:829
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
@ CmResourceShareDeviceExclusive
Definition: cmtypes.h:241
@ CmResourceShareShared
Definition: cmtypes.h:243
@ CmResourceShareUndetermined
Definition: cmtypes.h:240
@ CmResourceShareDriverExclusive
Definition: cmtypes.h:242
_In_ LARGE_INTEGER _Out_opt_ PLARGE_INTEGER Remainder
Definition: rtlfuncs.h:3045
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
unsigned char BYTE
Definition: xxhash.c:193