ReactOS 0.4.15-dev-8434-g155a7c7
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;
43
44void error(HWND hwnd, INT resId, ...)
45{
46 va_list ap;
47 WCHAR title[256];
48 WCHAR errfmt[1024];
49 WCHAR errstr[1024];
51
53
55 StringCbCopyW(title, sizeof(title), L"Error");
56
57 if (!LoadStringW(hInstance, resId, errfmt, ARRAY_SIZE(errfmt)))
58 StringCbCopyW(errfmt, sizeof(errfmt), L"Unknown error string!");
59
60 va_start(ap, resId);
62 va_end(ap);
63
65}
66
68{
69 WCHAR title[256];
71 StringCbCopyW(title, sizeof(title), L"Error");
73}
74
75void warning(HWND hwnd, INT resId, ...)
76{
77 va_list ap;
78 WCHAR title[256];
79 WCHAR errfmt[1024];
80 WCHAR errstr[1024];
82
84
86 StringCbCopyW(title, sizeof(title), L"Warning");
87
88 if (!LoadStringW(hInstance, resId, errfmt, ARRAY_SIZE(errfmt)))
89 StringCbCopyW(errfmt, sizeof(errfmt), L"Unknown error string!");
90
91 va_start(ap, resId);
92 StringCbVPrintfW(errstr, sizeof(errstr), errfmt, ap);
93 va_end(ap);
94
96}
97
99{
100 WCHAR* valueData;
101 HWND hwndValue;
102 int len;
103
105
106 switch(uMsg)
107 {
108 case WM_INITDIALOG:
110 {
112 }
113 else
114 {
115 WCHAR buffer[255];
118 }
122 return FALSE;
123 case WM_COMMAND:
124 switch (LOWORD(wParam))
125 {
126 case IDOK:
127 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
128 {
129 if ((len = GetWindowTextLength(hwndValue)))
130 {
131 if (stringValueData)
132 {
133 if ((valueData = HeapReAlloc(GetProcessHeap(), 0, stringValueData, (len + 1) * sizeof(WCHAR))))
134 {
135 stringValueData = valueData;
136 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
137 *stringValueData = 0;
138 }
139 }
140 else
141 {
142 if ((valueData = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR))))
143 {
144 stringValueData = valueData;
145 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
146 *stringValueData = 0;
147 }
148 }
149 }
150 else
151 {
152 if (stringValueData)
153 *stringValueData = 0;
154 }
155 }
156 EndDialog(hwndDlg, IDOK);
157 break;
158 case IDCANCEL:
159 EndDialog(hwndDlg, IDCANCEL);
160 return TRUE;
161 }
162 }
163 return FALSE;
164}
165
166
168{
169 WCHAR* valueData;
170 HWND hwndValue;
171 int len;
172
174
175 switch(uMsg)
176 {
177 case WM_INITDIALOG:
179 {
181 }
182 else
183 {
184 WCHAR buffer[255];
187 }
190 return FALSE;
191 case WM_COMMAND:
192 switch (LOWORD(wParam))
193 {
194 case IDOK:
195 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
196 {
197 if ((len = GetWindowTextLength(hwndValue)))
198 {
199 if (stringValueData)
200 {
201 if ((valueData = HeapReAlloc(GetProcessHeap(), 0, stringValueData, (len + 1) * sizeof(WCHAR))))
202 {
203 stringValueData = valueData;
204 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
205 *stringValueData = 0;
206 }
207 }
208 else
209 {
210 if ((valueData = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR))))
211 {
212 stringValueData = valueData;
213 if (!GetWindowTextW(hwndValue, stringValueData, len + 1))
214 *stringValueData = 0;
215 }
216 }
217 }
218 else
219 {
220 if (stringValueData)
221 *stringValueData = 0;
222 }
223 }
224 EndDialog(hwndDlg, IDOK);
225 break;
226 case IDCANCEL:
227 EndDialog(hwndDlg, IDCANCEL);
228 return TRUE;
229 }
230 }
231 return FALSE;
232}
233
234
236{
237 WNDPROC oldwndproc;
238
240
241 switch (uMsg)
242 {
243 case WM_CHAR:
245 {
246 if (isdigit((int) wParam & 0xff) || iscntrl((int) wParam & 0xff))
247 {
248 break;
249 }
250 else
251 {
252 return 0;
253 }
254 }
255 else if (dwordEditMode == EDIT_MODE_HEX)
256 {
257 if (isxdigit((int) wParam & 0xff) || iscntrl((int) wParam & 0xff))
258 {
259 break;
260 }
261 else
262 {
263 return 0;
264 }
265 }
266 else
267 {
268 break;
269 }
270 }
271
272 return CallWindowProcW(oldwndproc, hwnd, uMsg, wParam, lParam);
273}
274
275
277{
278 WNDPROC oldproc;
279 HWND hwndValue;
280 WCHAR ValueString[32];
282 DWORD Base;
283 DWORD Value = 0;
284
286
287 switch(uMsg)
288 {
289 case WM_INITDIALOG:
291
292 /* subclass the edit control */
293 hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA);
294 oldproc = (WNDPROC)GetWindowLongPtr(hwndValue, GWLP_WNDPROC);
295 SetWindowLongPtr(hwndValue, GWLP_USERDATA, (DWORD_PTR)oldproc);
297
299 {
301 }
302 else
303 {
304 WCHAR buffer[255];
307 }
309 StringCbPrintfW(ValueString, sizeof(ValueString), L"%lx", dwordValueData);
310 SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, ValueString);
313 return FALSE;
314
315 case WM_COMMAND:
316 switch (LOWORD(wParam))
317 {
318 case IDC_FORMAT_HEX:
320 {
322 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
323 {
324 if (GetWindowTextLength(hwndValue))
325 {
326 if (GetWindowTextW(hwndValue, ValueString, 32))
327 {
328 Value = wcstoul (ValueString, &Remainder, 10);
329 }
330 }
331 }
332 StringCbPrintfW(ValueString, sizeof(ValueString), L"%lx", Value);
333 SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, ValueString);
334 return TRUE;
335 }
336 break;
337
338 case IDC_FORMAT_DEC:
340 {
342 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
343 {
344 if (GetWindowTextLength(hwndValue))
345 {
346 if (GetWindowTextW(hwndValue, ValueString, 32))
347 {
348 Value = wcstoul (ValueString, &Remainder, 16);
349 }
350 }
351 }
352 StringCbPrintfW(ValueString, sizeof(ValueString), L"%lu", Value);
353 SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, ValueString);
354 return TRUE;
355 }
356 break;
357
358 case IDOK:
359 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
360 {
361 if (GetWindowTextLength(hwndValue))
362 {
363 if (!GetWindowTextW(hwndValue, ValueString, 32))
364 {
365 EndDialog(hwndDlg, IDCANCEL);
366 return TRUE;
367 }
368
369 Base = (dwordEditMode == EDIT_MODE_HEX) ? 16 : 10;
370 dwordValueData = wcstoul (ValueString, &Remainder, Base);
371 }
372 else
373 {
374 EndDialog(hwndDlg, IDCANCEL);
375 return TRUE;
376 }
377 }
378 EndDialog(hwndDlg, IDOK);
379 return TRUE;
380
381 case IDCANCEL:
382 EndDialog(hwndDlg, IDCANCEL);
383 return TRUE;
384 }
385 }
386 return FALSE;
387}
388
389
391{
392 HWND hwndValue;
393 UINT len;
394
396
397 switch(uMsg)
398 {
399 case WM_INITDIALOG:
401 {
403 }
404 else
405 {
406 WCHAR buffer[255];
409 }
410 hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA);
412 /* reset the hex edit control's font */
413 SendMessageW(hwndValue, WM_SETFONT, 0, 0);
414 SetFocus(hwndValue);
415 return FALSE;
416 case WM_COMMAND:
417 switch (LOWORD(wParam))
418 {
419 case IDOK:
420 if ((hwndValue = GetDlgItem(hwndDlg, IDC_VALUE_DATA)))
421 {
422 len = (UINT) HexEdit_GetBufferSize(hwndValue);
423 if (len > 0 && binValueData)
425 else
429 }
430 EndDialog(hwndDlg, IDOK);
431 break;
432 case IDCANCEL:
433 EndDialog(hwndDlg, IDCANCEL);
434 return TRUE;
435 }
436 }
437 return FALSE;
438}
439
440
442{
443 WCHAR szText[80];
444 RECT rc;
445 LVCOLUMN lvC;
446 HWND hwndLV;
447 INT width;
448
449 /* Create columns. */
450 lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
451 lvC.pszText = szText;
452 lvC.fmt = LVCFMT_LEFT;
453
454 hwndLV = GetDlgItem(hwnd, IDC_DMA_LIST);
456 GetClientRect(hwndLV, &rc);
457
458 /* Load the column labels from the resource file. */
459 lvC.iSubItem = 0;
460 lvC.cx = (rc.right - rc.left) / 2;
461 LoadStringW(hInst, IDS_DMA_CHANNEL, szText, ARRAY_SIZE(szText));
462 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
463 return FALSE;
464
465 lvC.iSubItem = 1;
466 lvC.cx = (rc.right - rc.left) - lvC.cx;
467 LoadStringW(hInst, IDS_DMA_PORT, szText, ARRAY_SIZE(szText));
468 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
469 return FALSE;
470
471
472 /* Interrupt list */
473 hwndLV = GetDlgItem(hwnd, IDC_IRQ_LIST);
475 GetClientRect(hwndLV, &rc);
476 width = (rc.right - rc.left) / 4;
477
478 /* Load the column labels from the resource file. */
479 lvC.iSubItem = 0;
480 lvC.cx = width;
482 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
483 return FALSE;
484
485 lvC.iSubItem = 1;
487 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
488 return FALSE;
489
490 lvC.iSubItem = 2;
492 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
493 return FALSE;
494
495 lvC.iSubItem = 3;
496 lvC.cx = (rc.right - rc.left) - 3 * width;
498 if (ListView_InsertColumn(hwndLV, 3, &lvC) == -1)
499 return FALSE;
500
501
502 /* Memory list */
505 GetClientRect(hwndLV, &rc);
506 width = (rc.right - rc.left) / 3;
507
508 /* Load the column labels from the resource file. */
509 lvC.iSubItem = 0;
510 lvC.cx = width;
512 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
513 return FALSE;
514
515 lvC.iSubItem = 1;
517 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
518 return FALSE;
519
520 lvC.iSubItem = 2;
521 lvC.cx = (rc.right - rc.left) - 2 * width;
523 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
524 return FALSE;
525
526
527 /* Port list */
528 hwndLV = GetDlgItem(hwnd, IDC_PORT_LIST);
530 GetClientRect(hwndLV, &rc);
531 width = (rc.right - rc.left) / 3;
532
533 /* Load the column labels from the resource file. */
534 lvC.iSubItem = 0;
535 lvC.cx = width;
536 LoadStringW(hInst, IDS_PORT_ADDRESS, szText, ARRAY_SIZE(szText));
537 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
538 return FALSE;
539
540 lvC.iSubItem = 1;
541 LoadStringW(hInst, IDS_PORT_LENGTH, szText, ARRAY_SIZE(szText));
542 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
543 return FALSE;
544
545 lvC.iSubItem = 2;
546 lvC.cx = (rc.right - rc.left) - 2 * width;
547 LoadStringW(hInst, IDS_PORT_ACCESS, szText, ARRAY_SIZE(szText));
548 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
549 return FALSE;
550
551 /* Device specific list */
554 GetClientRect(hwndLV, &rc);
555 width = (rc.right - rc.left) / 3;
556
557 /* Load the column labels from the resource file. */
558 lvC.iSubItem = 0;
559 lvC.cx = width;
561 if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
562 return FALSE;
563
564 lvC.iSubItem = 1;
566 if (ListView_InsertColumn(hwndLV, 1, &lvC) == -1)
567 return FALSE;
568
569 lvC.iSubItem = 2;
570 lvC.cx = (rc.right - rc.left) - 2 * width;
572 if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
573 return FALSE;
574
575 return TRUE;
576}
577
578static VOID
582{
583// LPWSTR lpInterfaceType;
584
585 switch (InterfaceType)
586 {
589// lpInterfaceType = L"Undefined";
590 break;
591 case Internal:
593// lpInterfaceType = L"Internal";
594 break;
595 case Isa:
597// lpInterfaceType = L"Isa";
598 break;
599 case Eisa:
601// lpInterfaceType = L"Eisa";
602 break;
603 case MicroChannel:
605// lpInterfaceType = L"MicroChannel";
606 break;
607 case TurboChannel:
609// lpInterfaceType = L"TurboChannel";
610 break;
611 case PCIBus:
613// lpInterfaceType = L"PCIBus";
614 break;
615 case VMEBus:
617// lpInterfaceType = L"VMEBus";
618 break;
619 case NuBus:
621// lpInterfaceType = L"NuBus";
622 break;
623 case PCMCIABus:
625// lpInterfaceType = L"PCMCIABus";
626 break;
627 case CBus:
629// lpInterfaceType = L"CBus";
630 break;
631 case MPIBus:
633// lpInterfaceType = L"MPIBus";
634 break;
635 case MPSABus:
637// lpInterfaceType = L"MPSABus";
638 break;
641// lpInterfaceType = L"ProcessorInternal";
642 break;
643 case InternalPowerBus:
645// lpInterfaceType = L"InternalPowerBus";
646 break;
647 case PNPISABus:
649// lpInterfaceType = L"PNPISABus";
650 break;
651 case PNPBus:
653// lpInterfaceType = L"PNPBus";
654 break;
655 default:
657// lpInterfaceType = L"Unknown interface type";
658 break;
659 }
660
661// wcscpy(pBuffer, lpInterfaceType);
662}
663
664
665static VOID
667{
668 PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor;
669 PCM_PARTIAL_RESOURCE_LIST pPartialResourceList;
671 ULONG i;
672 HWND hwndLV;
673
674 WCHAR buffer[80];
676 INT iItem;
677
678 pFullDescriptor = &resourceValueData->List[0];
679 for (i = 0; i < fullResourceIndex; i++)
680 {
681 pFullDescriptor = (PVOID)(pFullDescriptor->PartialResourceList.PartialDescriptors +
682 pFullDescriptor->PartialResourceList.Count);
683 }
684 pPartialResourceList = &pFullDescriptor->PartialResourceList;
685
686 /* Interface type */
687 GetInterfaceType(pFullDescriptor->InterfaceType, buffer, 80);
689
690 /* Busnumber */
691 SetDlgItemInt(hwnd, IDC_BUSNUMBER, (UINT)pFullDescriptor->BusNumber, TRUE);
692
693 /* Version */
694 SetDlgItemInt(hwnd, IDC_VERSION, (UINT)pPartialResourceList->Version, FALSE);
695
696 /* Revision */
697 SetDlgItemInt(hwnd, IDC_REVISION, (UINT)pPartialResourceList->Revision, FALSE);
698
699 for (i = 0; i < pPartialResourceList->Count; i++)
700 {
701 pDescriptor = &pPartialResourceList->PartialDescriptors[i];
702
703 switch (pDescriptor->Type)
704 {
706 hwndLV = GetDlgItem(hwnd, IDC_PORT_LIST);
707
708#ifdef _M_AMD64
709 wsprintf(buffer, L"0x%016I64x", pDescriptor->u.Port.Start.QuadPart);
710#else
711 wsprintf(buffer, L"0x%08lx", pDescriptor->u.Port.Start.u.LowPart);
712#endif
713
714 item.mask = LVIF_TEXT | LVIF_PARAM;
715 item.iItem = 1000;
716 item.iSubItem = 0;
717 item.state = 0;
718 item.stateMask = 0;
719 item.pszText = buffer;
720 item.cchTextMax = (int)wcslen(item.pszText);
721 item.lParam = (LPARAM)pDescriptor;
722
723 iItem = ListView_InsertItem(hwndLV, &item);
724 if (iItem != -1)
725 {
726 wsprintf(buffer, L"0x%lx", pDescriptor->u.Port.Length);
727 ListView_SetItemText(hwndLV, iItem, 1, buffer);
728
729 if (pDescriptor->Flags & CM_RESOURCE_PORT_IO)
731 else
733 ListView_SetItemText(hwndLV, iItem, 2, buffer);
734 }
735 break;
736
738 hwndLV = GetDlgItem(hwnd, IDC_IRQ_LIST);
739
740 wsprintf(buffer, L"%lu", pDescriptor->u.Interrupt.Vector);
741
742 item.mask = LVIF_TEXT | LVIF_PARAM;
743 item.iItem = 1000;
744 item.iSubItem = 0;
745 item.state = 0;
746 item.stateMask = 0;
747 item.pszText = buffer;
748 item.cchTextMax = (int)wcslen(item.pszText);
749 item.lParam = (LPARAM)pDescriptor;
750
751 iItem = ListView_InsertItem(hwndLV, &item);
752 if (iItem != -1)
753 {
754 wsprintf(buffer, L"%lu", pDescriptor->u.Interrupt.Level);
755 ListView_SetItemText(hwndLV, iItem, 1, buffer);
756
757 wsprintf(buffer, L"0x%08lx", pDescriptor->u.Interrupt.Affinity);
758 ListView_SetItemText(hwndLV, iItem, 2, buffer);
759
760 if (pDescriptor->Flags & CM_RESOURCE_INTERRUPT_LATCHED)
762 else
764
765 ListView_SetItemText(hwndLV, iItem, 3, buffer);
766 }
767 break;
768
771
772#ifdef _M_AMD64
773 wsprintf(buffer, L"0x%016I64x", pDescriptor->u.Memory.Start.QuadPart);
774#else
775 wsprintf(buffer, L"0x%08lx", pDescriptor->u.Memory.Start.u.LowPart);
776#endif
777
778 item.mask = LVIF_TEXT | LVIF_PARAM;
779 item.iItem = 1000;
780 item.iSubItem = 0;
781 item.state = 0;
782 item.stateMask = 0;
783 item.pszText = buffer;
784 item.cchTextMax = (int)wcslen(item.pszText);
785 item.lParam = (LPARAM)pDescriptor;
786
787 iItem = ListView_InsertItem(hwndLV, &item);
788 if (iItem != -1)
789 {
790 wsprintf(buffer, L"0x%lx", pDescriptor->u.Memory.Length);
791 ListView_SetItemText(hwndLV, iItem, 1, buffer);
792
794 {
797 break;
798
801 break;
802
803 default:
805 break;
806 }
807
808 ListView_SetItemText(hwndLV, iItem, 2, buffer);
809 }
810 break;
811
813 hwndLV = GetDlgItem(hwnd, IDC_DMA_LIST);
814
815 wsprintf(buffer, L"%lu", pDescriptor->u.Dma.Channel);
816
817 item.mask = LVIF_TEXT | LVIF_PARAM;
818 item.iItem = 1000;
819 item.iSubItem = 0;
820 item.state = 0;
821 item.stateMask = 0;
822 item.pszText = buffer;
823 item.cchTextMax = (int)wcslen(item.pszText);
824 item.lParam = (LPARAM)pDescriptor;
825
826 iItem = ListView_InsertItem(hwndLV, &item);
827 if (iItem != -1)
828 {
829 wsprintf(buffer, L"%lu", pDescriptor->u.Dma.Port);
830 ListView_SetItemText(hwndLV, iItem, 1, buffer);
831 }
832 break;
833
836
837 wsprintf(buffer, L"0x%08lx", pDescriptor->u.DeviceSpecificData.Reserved1);
838
839 item.mask = LVIF_TEXT | LVIF_PARAM;
840 item.iItem = 1000;
841 item.iSubItem = 0;
842 item.state = 0;
843 item.stateMask = 0;
844 item.pszText = buffer;
845 item.cchTextMax = (int)wcslen(item.pszText);
846 item.lParam = (LPARAM)pDescriptor;
847
848 iItem = ListView_InsertItem(hwndLV, &item);
849 if (iItem != -1)
850 {
851 wsprintf(buffer, L"0x%08lx", pDescriptor->u.DeviceSpecificData.Reserved2);
852 ListView_SetItemText(hwndLV, iItem, 1, buffer);
853
854 wsprintf(buffer, L"0x%lx", pDescriptor->u.DeviceSpecificData.DataSize);
855 ListView_SetItemText(hwndLV, iItem, 2, buffer);
856 }
857 break;
858 }
859 }
860}
861
862
863static BOOL
865{
866 LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)phdr;
867
868 switch (phdr->idFrom)
869 {
870 case IDC_PORT_LIST:
871 case IDC_MEMORY_LIST:
872 case IDC_DMA_LIST:
873 case IDC_IRQ_LIST:
874 case IDC_DEVICE_LIST:
875 switch(phdr->code)
876 {
877 case NM_CLICK:
878 if (lpnmlv->iItem != -1)
879 {
882
883 item.mask = LVIF_PARAM;
884 item.iItem = lpnmlv->iItem;
885 item.iSubItem = 0;
886
887 if (ListView_GetItem(phdr->hwndFrom, &item))
888 {
889 pDescriptor = (PCM_PARTIAL_RESOURCE_DESCRIPTOR)item.lParam;
890
893
895 (pDescriptor->ShareDisposition == CmResourceShareShared));
896
899
902 }
903 }
904 else
905 {
910 }
911 break;
912 }
913 break;
914 }
915
916 return FALSE;
917}
918
919
921{
923
924 switch(uMsg)
925 {
926 case WM_INITDIALOG:
927 CreateResourceColumns(hwndDlg);
928 ParseResources(hwndDlg);
929 return FALSE;
930
931 case WM_NOTIFY:
932 return OnResourceNotify(hwndDlg, (NMHDR *)lParam);
933
934 case WM_COMMAND:
935 switch (LOWORD(wParam))
936 {
937 case IDOK:
938 EndDialog(hwndDlg, IDOK);
939 break;
940 case IDCANCEL:
941 EndDialog(hwndDlg, IDCANCEL);
942 return TRUE;
943 }
944 }
945 return FALSE;
946}
947
949{
950 WCHAR szText[80];
951 RECT rc;
952 LVCOLUMN lvC;
953
955
956 GetClientRect(hWndListView, &rc);
957
958 /* Create columns. */
959 lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
960 lvC.pszText = szText;
961 lvC.fmt = LVCFMT_LEFT;
962
963 /* Load the column labels from the resource file. */
964 lvC.iSubItem = 0;
965 lvC.cx = (rc.right - rc.left) / 2;
966 LoadStringW(hInst, IDS_BUSNUMBER, szText, ARRAY_SIZE(szText));
967 if (ListView_InsertColumn(hWndListView, 0, &lvC) == -1)
968 return FALSE;
969
970 lvC.iSubItem = 1;
971 lvC.cx = (rc.right - rc.left) - lvC.cx;
972 LoadStringW(hInst, IDS_INTERFACE, szText, ARRAY_SIZE(szText));
973 if (ListView_InsertColumn(hWndListView, 1, &lvC) == -1)
974 return FALSE;
975
976 return TRUE;
977}
978
980{
981 PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor;
982 WCHAR buffer[80];
984 ULONG i;
985 INT iItem;
986
987 pFullDescriptor = &resourceValueData->List[0];
988 for (i = 0; i < resourceValueData->Count; i++)
989 {
990 wsprintf(buffer, L"%lu", pFullDescriptor->BusNumber);
991
992 item.mask = LVIF_TEXT;
993 item.iItem = i;
994 item.iSubItem = 0;
995 item.state = 0;
996 item.stateMask = 0;
997 item.pszText = buffer;
998 item.cchTextMax = (int)wcslen(item.pszText);
999
1000 iItem = ListView_InsertItem(hwnd, &item);
1001 if (iItem != -1)
1002 {
1003 GetInterfaceType(pFullDescriptor->InterfaceType, buffer, 80);
1004 ListView_SetItemText(hwnd, iItem, 1, buffer);
1005 }
1006 pFullDescriptor = (PVOID)(pFullDescriptor->PartialResourceList.PartialDescriptors +
1007 pFullDescriptor->PartialResourceList.Count);
1008 }
1009}
1010
1011static BOOL
1013{
1014 LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)phdr;
1015
1016 switch (phdr->idFrom)
1017 {
1018 case IDC_RESOURCE_LIST:
1019 switch(phdr->code)
1020 {
1021 case NM_CLICK:
1022 fullResourceIndex = lpnmlv->iItem;
1023 EnableWindow(GetDlgItem(hwndDlg, IDC_SHOW_RESOURCE), (lpnmlv->iItem != -1));
1024 break;
1025
1026 case NM_DBLCLK:
1027 if (lpnmlv->iItem != -1)
1028 {
1029 fullResourceIndex = lpnmlv->iItem;
1031 }
1032 break;
1033 }
1034 break;
1035 }
1036
1037 return FALSE;
1038}
1039
1040
1042{
1044
1045 switch(uMsg)
1046 {
1047 case WM_INITDIALOG:
1050 return FALSE;
1051
1052 case WM_NOTIFY:
1053 return OnResourceListNotify(hwndDlg, (NMHDR *)lParam);
1054
1055 case WM_COMMAND:
1056 switch (LOWORD(wParam))
1057 {
1058 case IDC_SHOW_RESOURCE:
1059 if (fullResourceIndex != -1)
1061 break;
1062 case IDOK:
1063 EndDialog(hwndDlg, IDOK);
1064 break;
1065 case IDCANCEL:
1066 EndDialog(hwndDlg, IDCANCEL);
1067 return TRUE;
1068 }
1069 }
1070 return FALSE;
1071}
1072
1073static BOOL
1075{
1076 WCHAR szText[80];
1077 RECT rc;
1078 LVCOLUMN lvC;
1079
1081
1082 GetClientRect(hWndListView, &rc);
1083
1084 /* Create columns. */
1085 lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
1086 lvC.pszText = szText;
1087 lvC.fmt = LVCFMT_LEFT;
1088
1089 /* Load the column labels from the resource file. */
1090 lvC.iSubItem = 0;
1091 lvC.cx = (rc.right - rc.left) / 4;
1093 if (ListView_InsertColumn(hWndListView, 0, &lvC) == -1)
1094 return FALSE;
1095
1096 lvC.iSubItem = 1;
1097 lvC.cx = (rc.right - rc.left) / 4;
1099 if (ListView_InsertColumn(hWndListView, 1, &lvC) == -1)
1100 return FALSE;
1101
1102 lvC.iSubItem = 2;
1103 lvC.cx = (rc.right - rc.left) / 4;
1104 LoadStringW(hInst, IDS_REQDESCRIPTOR, szText, ARRAY_SIZE(szText));
1105 if (ListView_InsertColumn(hWndListView, 2, &lvC) == -1)
1106 return FALSE;
1107
1108 lvC.iSubItem = 3;
1109 lvC.cx = (rc.right - rc.left) - (3 * ((rc.right - rc.left) / 4));
1110 LoadStringW(hInst, IDS_REQDEVICETYPE, szText, ARRAY_SIZE(szText));
1111 if (ListView_InsertColumn(hWndListView, 3, &lvC) == -1)
1112 return FALSE;
1113
1114 return TRUE;
1115}
1116
1117static VOID
1121{
1122 switch (ResourceType)
1123 {
1124 case CmResourceTypePort:
1126 break;
1127
1130 break;
1131
1134 break;
1135
1136 case CmResourceTypeDma:
1138 break;
1139
1140 default:
1141 wsprintf(pBuffer, L"Unknown %u", ResourceType);
1142 break;
1143 }
1144}
1145
1146static VOID
1148 UCHAR ShareDisposition,
1151{
1152 switch (ShareDisposition)
1153 {
1156 break;
1157
1160 break;
1161
1164 break;
1165
1168 break;
1169 }
1170}
1171
1172static VOID
1174 USHORT Flags,
1177{
1179 {
1181 }
1183 {
1185 }
1186}
1187
1188static VOID
1190 USHORT Flags,
1193{
1195 {
1197 }
1199 {
1201 }
1203 {
1205 }
1206}
1207
1208static VOID
1210 USHORT Flags,
1213{
1215 {
1217 }
1218 else
1219 {
1221 }
1222}
1223
1224static VOID
1226{
1227 PIO_RESOURCE_LIST pResourceList;
1228 PIO_RESOURCE_DESCRIPTOR pDescriptor;
1229 WCHAR buffer[80];
1230 LVITEMW item;
1231 ULONG i, j, index;
1232 INT iItem;
1233
1234 index = 0;
1235 pResourceList = &requirementsValueData->List[0];
1236 for (i = 0; i < requirementsValueData->AlternativeLists; i++)
1237 {
1238 for (j = 0; j < pResourceList->Count; j++)
1239 {
1240 pDescriptor = &pResourceList->Descriptors[j];
1241
1242 wsprintf(buffer, L"%lu", i + 1);
1243
1244 item.mask = LVIF_TEXT | LVIF_PARAM;
1245 item.iItem = index;
1246 item.iSubItem = 0;
1247 item.state = 0;
1248 item.stateMask = 0;
1249 item.pszText = buffer;
1250 item.cchTextMax = (int)wcslen(item.pszText);
1251 item.lParam = (LPARAM)pDescriptor;
1252
1253 iItem = ListView_InsertItem(hwnd, &item);
1254 if (iItem != -1)
1255 {
1256 wsprintf(buffer, L"%lu", j + 1);
1257 ListView_SetItemText(hwnd, iItem, 1, buffer);
1258 wsprintf(buffer, L"%lu", 1);
1259 ListView_SetItemText(hwnd, iItem, 2, buffer);
1260
1261 GetResourceType(pDescriptor->Type, buffer, 80);
1262 ListView_SetItemText(hwnd, iItem, 3, buffer);
1263 }
1264
1265 index++;
1266 }
1267
1268
1269 pResourceList = (PIO_RESOURCE_LIST)(pResourceList->Descriptors + pResourceList->Count);
1270 }
1271
1276}
1277
1279{
1280 PIO_RESOURCE_DESCRIPTOR pDescriptor;
1281 WCHAR Buffer[80];
1282
1283 switch(uMsg)
1284 {
1285 case WM_INITDIALOG:
1286 pDescriptor = (PIO_RESOURCE_DESCRIPTOR)lParam;
1287
1288 GetPortType(pDescriptor->Flags, Buffer, 80);
1290
1291 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Port.Length);
1293 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Port.Alignment);
1295#ifdef _M_AMD64
1296 wsprintf(Buffer, L"0x%016I64x", pDescriptor->u.Port.MinimumAddress.QuadPart);
1297#else
1298 wsprintf(Buffer, L"0x%08lx", pDescriptor->u.Port.MinimumAddress.u.LowPart);
1299#endif
1301#ifdef _M_AMD64
1302 wsprintf(Buffer, L"0x%016I64x", pDescriptor->u.Port.MaximumAddress.QuadPart);
1303#else
1304 wsprintf(Buffer, L"0x%08lx", pDescriptor->u.Port.MaximumAddress.u.LowPart);
1305#endif
1307
1308 GetShareDisposition(pDescriptor->ShareDisposition, Buffer, 80);
1310
1313 return FALSE;
1314
1315 case WM_COMMAND:
1316 switch (LOWORD(wParam))
1317 {
1318 case IDOK:
1319 case IDCANCEL:
1320 EndDialog(hwndDlg, IDOK);
1321 break;
1322 }
1323 }
1324 return FALSE;
1325}
1326
1328{
1329 PIO_RESOURCE_DESCRIPTOR pDescriptor;
1330 WCHAR Buffer[80];
1331
1332 switch(uMsg)
1333 {
1334 case WM_INITDIALOG:
1335 pDescriptor = (PIO_RESOURCE_DESCRIPTOR)lParam;
1336
1337 GetMemoryAccess(pDescriptor->Flags, Buffer, 80);
1339
1340 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Memory.Length);
1342 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Memory.Alignment);
1344#ifdef _M_AMD64
1345 wsprintf(Buffer, L"0x%016I64x", pDescriptor->u.Memory.MinimumAddress.QuadPart);
1346#else
1347 wsprintf(Buffer, L"0x%08lx", pDescriptor->u.Memory.MinimumAddress.u.LowPart);
1348#endif
1350#ifdef _M_AMD64
1351 wsprintf(Buffer, L"0x%016I64x", pDescriptor->u.Memory.MaximumAddress.QuadPart);
1352#else
1353 wsprintf(Buffer, L"0x%08lx", pDescriptor->u.Memory.MaximumAddress.u.LowPart);
1354#endif
1356
1357 GetShareDisposition(pDescriptor->ShareDisposition, Buffer, 80);
1359
1362 return FALSE;
1363
1364 case WM_COMMAND:
1365 switch (LOWORD(wParam))
1366 {
1367 case IDOK:
1368 case IDCANCEL:
1369 EndDialog(hwndDlg, IDOK);
1370 break;
1371 }
1372 }
1373 return FALSE;
1374}
1375
1377{
1378 PIO_RESOURCE_DESCRIPTOR pDescriptor;
1379 WCHAR Buffer[80];
1380
1381 switch(uMsg)
1382 {
1383 case WM_INITDIALOG:
1384 pDescriptor = (PIO_RESOURCE_DESCRIPTOR)lParam;
1385
1386 GetInterruptType(pDescriptor->Flags, Buffer, 80);
1388
1389 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Interrupt.MinimumVector);
1391 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Interrupt.MaximumVector);
1393
1394 GetShareDisposition(pDescriptor->ShareDisposition, Buffer, 80);
1396
1399 return FALSE;
1400
1401 case WM_COMMAND:
1402 switch (LOWORD(wParam))
1403 {
1404 case IDOK:
1405 case IDCANCEL:
1406 EndDialog(hwndDlg, IDOK);
1407 break;
1408 }
1409 }
1410 return FALSE;
1411}
1412
1414{
1415 PIO_RESOURCE_DESCRIPTOR pDescriptor;
1416 WCHAR Buffer[80];
1417
1418 switch(uMsg)
1419 {
1420 case WM_INITDIALOG:
1421 pDescriptor = (PIO_RESOURCE_DESCRIPTOR)lParam;
1422 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Dma.MinimumChannel);
1424 wsprintf(Buffer, L"0x%lx", pDescriptor->u.Dma.MaximumChannel);
1426
1427 GetShareDisposition(pDescriptor->ShareDisposition, Buffer, 80);
1429
1432 return FALSE;
1433
1434 case WM_COMMAND:
1435 switch (LOWORD(wParam))
1436 {
1437 case IDOK:
1438 case IDCANCEL:
1439 EndDialog(hwndDlg, IDOK);
1440 break;
1441 }
1442 }
1443 return FALSE;
1444}
1445
1446static VOID
1448{
1449 PIO_RESOURCE_DESCRIPTOR pDescriptor;
1450 LVITEMW item;
1451
1452 if (requirementsIndex == -1)
1453 return;
1454
1455 item.mask = LVIF_PARAM;
1456 item.iItem = requirementsIndex;
1457 item.iSubItem = 0;
1459
1460 pDescriptor = (PIO_RESOURCE_DESCRIPTOR)item.lParam;
1461 if (pDescriptor)
1462 {
1463 switch (pDescriptor->Type)
1464 {
1465 case CmResourceTypePort:
1467 break;
1470 break;
1473 break;
1474 case CmResourceTypeDma:
1476 break;
1477 default:
1478 break;
1479 }
1480 }
1481}
1482
1483static BOOL
1485{
1486 LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)phdr;
1487
1488 switch (phdr->idFrom)
1489 {
1491 switch(phdr->code)
1492 {
1493 case NM_CLICK:
1494 requirementsIndex = lpnmlv->iItem;
1495 EnableWindow(GetDlgItem(hwndDlg, IDC_SHOW_REQUIREMENT), (lpnmlv->iItem != -1));
1496 break;
1497
1498 case NM_DBLCLK:
1499 if (lpnmlv->iItem != -1)
1500 {
1501 requirementsIndex = lpnmlv->iItem;
1502 ShowRequirement(hwndDlg);
1503 }
1504 break;
1505 }
1506 break;
1507 }
1508
1509 return FALSE;
1510}
1511
1513{
1515
1516 switch(uMsg)
1517 {
1518 case WM_INITDIALOG:
1521 return FALSE;
1522
1523 case WM_NOTIFY:
1524 return OnRequirementsListNotify(hwndDlg, (NMHDR *)lParam);
1525
1526 case WM_COMMAND:
1527 switch (LOWORD(wParam))
1528 {
1530 if (requirementsIndex != -1)
1531 ShowRequirement(hwndDlg);
1532 break;
1533 case IDOK:
1534 EndDialog(hwndDlg, IDOK);
1535 break;
1536 case IDCANCEL:
1537 EndDialog(hwndDlg, IDCANCEL);
1538 return TRUE;
1539 }
1540 }
1541 return FALSE;
1542}
1543
1545{
1546 DWORD type;
1547 LONG lRet;
1548 BOOL result = FALSE;
1549
1550 if (!hKey)
1551 return FALSE;
1552
1553 editValueName = valueName;
1554
1555 lRet = RegQueryValueExW(hKey, valueName, 0, &type, 0, &valueDataLen);
1556 if (lRet != ERROR_SUCCESS && (valueName == NULL || !valueName[0]))
1557 {
1558 lRet = ERROR_SUCCESS; /* Allow editing of (Default) values which don't exist */
1559 type = REG_SZ;
1560 valueDataLen = 0;
1563 }
1564
1565 if (lRet != ERROR_SUCCESS)
1566 {
1567 error(hwnd, IDS_BAD_VALUE, valueName);
1568 goto done;
1569 }
1570
1571 if (EditBin == FALSE && ((type == REG_SZ) || (type == REG_EXPAND_SZ)))
1572 {
1573 if (valueDataLen > 0)
1574 {
1576 {
1578 goto done;
1579 }
1580 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)stringValueData, &valueDataLen);
1581 if (lRet != ERROR_SUCCESS)
1582 {
1583 error(hwnd, IDS_BAD_VALUE, valueName);
1584 goto done;
1585 }
1586 }
1587 else
1588 {
1590 }
1591
1593 {
1594 if (stringValueData)
1595 {
1596 lRet = RegSetValueExW(hKey, valueName, 0, type, (LPBYTE)stringValueData, (DWORD) (wcslen(stringValueData) + 1) * sizeof(WCHAR));
1597 }
1598 else
1599 {
1600 lRet = RegSetValueExW(hKey, valueName, 0, type, NULL, 0);
1601 }
1602 if (lRet == ERROR_SUCCESS)
1603 result = TRUE;
1604 }
1605 }
1606 else if (EditBin == FALSE && type == REG_MULTI_SZ)
1607 {
1608 if (valueDataLen > 0)
1609 {
1610 size_t llen, listlen, nl_len;
1611 LPWSTR src, lines = NULL;
1612
1614 {
1616 goto done;
1617 }
1618 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)stringValueData, &valueDataLen);
1619 if (lRet != ERROR_SUCCESS)
1620 {
1621 error(hwnd, IDS_BAD_VALUE, valueName);
1622 goto done;
1623 }
1624
1625 /* convert \0 to \r\n */
1627 nl_len = wcslen(L"\r\n") * sizeof(WCHAR);
1628 listlen = sizeof(WCHAR);
1629 lines = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, listlen + sizeof(WCHAR));
1630 while(*src != L'\0')
1631 {
1632 llen = wcslen(src);
1633 if(llen == 0)
1634 break;
1635 listlen += (llen * sizeof(WCHAR)) + nl_len;
1637 wcscat(lines, src);
1638 wcscat(lines, L"\r\n");
1639 src += llen + 1;
1640 }
1643 }
1644 else
1645 {
1647 }
1648
1650 {
1651 if (stringValueData)
1652 {
1653 /* convert \r\n to \0 */
1654 BOOL EmptyLines = FALSE;
1655 LPWSTR src, lines, nl;
1656 size_t linechars, buflen, c_nl, dest;
1657
1659 buflen = sizeof(WCHAR);
1660 lines = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buflen + sizeof(WCHAR));
1661 c_nl = wcslen(L"\r\n");
1662 dest = 0;
1663 while(*src != L'\0')
1664 {
1665 if((nl = wcsstr(src, L"\r\n")))
1666 {
1667 linechars = nl - src;
1668 if(nl == src)
1669 {
1670 EmptyLines = TRUE;
1671 src = nl + c_nl;
1672 continue;
1673 }
1674 }
1675 else
1676 {
1677 linechars = wcslen(src);
1678 }
1679 if(linechars > 0)
1680 {
1681 buflen += ((linechars + 1) * sizeof(WCHAR));
1683 memcpy((lines + dest), src, linechars * sizeof(WCHAR));
1684 dest += linechars;
1685 lines[dest++] = L'\0';
1686 }
1687 else
1688 {
1689 EmptyLines = TRUE;
1690 }
1691 src += linechars + (nl != NULL ? c_nl : 0);
1692 }
1693 lines[++dest] = L'\0';
1694
1695 if(EmptyLines)
1696 {
1698 }
1699
1700 lRet = RegSetValueExW(hKey, valueName, 0, type, (LPBYTE)lines, (DWORD) buflen);
1702 }
1703 else
1704 {
1705 lRet = RegSetValueExW(hKey, valueName, 0, type, NULL, 0);
1706 }
1707 if (lRet == ERROR_SUCCESS)
1708 result = TRUE;
1709 }
1710 }
1711 else if (EditBin == FALSE && type == REG_DWORD)
1712 {
1713 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)&dwordValueData, &valueDataLen);
1714 if (lRet != ERROR_SUCCESS)
1715 {
1716 error(hwnd, IDS_BAD_VALUE, valueName);
1717 goto done;
1718 }
1719
1721 {
1722 lRet = RegSetValueExW(hKey, valueName, 0, type, (LPBYTE)&dwordValueData, sizeof(DWORD));
1723 if (lRet == ERROR_SUCCESS)
1724 result = TRUE;
1725 }
1726 }
1727 else if (EditBin == FALSE && type == REG_RESOURCE_LIST)
1728 {
1729 if (valueDataLen > 0)
1730 {
1732 if (resourceValueData == NULL)
1733 {
1735 goto done;
1736 }
1737
1738 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)resourceValueData, &valueDataLen);
1739 if (lRet != ERROR_SUCCESS)
1740 {
1741 error(hwnd, IDS_BAD_VALUE, valueName);
1742 goto done;
1743 }
1744 }
1745 else
1746 {
1748 }
1749
1751 {
1752 }
1753 }
1754 else if (EditBin == FALSE && type == REG_FULL_RESOURCE_DESCRIPTOR)
1755 {
1756 if (valueDataLen > 0)
1757 {
1759 if (resourceValueData == NULL)
1760 {
1762 goto done;
1763 }
1764
1765 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)&resourceValueData->List[0], &valueDataLen);
1766 if (lRet != ERROR_SUCCESS)
1767 {
1768 error(hwnd, IDS_BAD_VALUE, valueName);
1769 goto done;
1770 }
1771
1774 }
1775 else
1776 {
1778 }
1779
1781 {
1782 }
1783 }
1784 else if (EditBin == FALSE && type == REG_RESOURCE_REQUIREMENTS_LIST)
1785 {
1786 if (valueDataLen > 0)
1787 {
1790 {
1792 goto done;
1793 }
1794
1795 lRet = RegQueryValueExW(hKey, valueName, 0, 0, (LPBYTE)requirementsValueData, &valueDataLen);
1796 if (lRet != ERROR_SUCCESS)
1797 {
1798 error(hwnd, IDS_BAD_VALUE, valueName);
1799 goto done;
1800 }
1801
1802 }
1803 else
1804 {
1806 }
1807
1809 {
1810 }
1811 }
1812 else if ((EditBin != FALSE) || (type == REG_NONE) || (type == REG_BINARY))
1813 {
1814 if(valueDataLen > 0)
1815 {
1817 {
1819 goto done;
1820 }
1821
1822 /* Use the unicode version, so editing strings in binary mode is correct */
1823 lRet = RegQueryValueExW(hKey, valueName,
1825 if (lRet != ERROR_SUCCESS)
1826 {
1828 error(hwnd, IDS_BAD_VALUE, valueName);
1829 goto done;
1830 }
1831 }
1832 else
1833 {
1835 }
1836
1838 {
1839 /* Use the unicode version, so editing strings in binary mode is correct */
1840 lRet = RegSetValueExW(hKey, valueName,
1842 if (lRet == ERROR_SUCCESS)
1843 result = TRUE;
1844 }
1845 if(binValueData != NULL)
1847 }
1848 else
1849 {
1851 }
1852
1853done:
1857
1858 if (stringValueData)
1861
1865
1866 return result;
1867}
1868
1869static LONG CopyKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
1870{
1871 LONG lResult;
1872 DWORD dwDisposition;
1873 HKEY hDestSubKey = NULL;
1874 HKEY hSrcSubKey = NULL;
1875 DWORD dwIndex, dwType, cbName, cbData;
1876 WCHAR szSubKey[256];
1877 WCHAR szValueName[256];
1878 BYTE szValueData[512];
1879
1880 FILETIME ft;
1881
1882 /* open the source subkey, if specified */
1883 if (lpSrcSubKey)
1884 {
1885 lResult = RegOpenKeyExW(hSrcKey, lpSrcSubKey, 0, KEY_ALL_ACCESS, &hSrcSubKey);
1886 if (lResult)
1887 goto done;
1888 hSrcKey = hSrcSubKey;
1889 }
1890
1891 /* create the destination subkey */
1892 lResult = RegCreateKeyExW(hDestKey, lpDestSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL,
1893 &hDestSubKey, &dwDisposition);
1894 if (lResult)
1895 goto done;
1896
1897 /* copy all subkeys */
1898 dwIndex = 0;
1899 do
1900 {
1901 cbName = sizeof(szSubKey) / sizeof(szSubKey[0]);
1902 lResult = RegEnumKeyExW(hSrcKey, dwIndex++, szSubKey, &cbName, NULL, NULL, NULL, &ft);
1903 if (lResult == ERROR_SUCCESS)
1904 {
1905 lResult = CopyKey(hDestSubKey, szSubKey, hSrcKey, szSubKey);
1906 if (lResult)
1907 goto done;
1908 }
1909 }
1910 while(lResult == ERROR_SUCCESS);
1911
1912 /* copy all subvalues */
1913 dwIndex = 0;
1914 do
1915 {
1916 cbName = sizeof(szValueName) / sizeof(szValueName[0]);
1917 cbData = sizeof(szValueData) / sizeof(szValueData[0]);
1918 lResult = RegEnumValueW(hSrcKey, dwIndex++, szValueName, &cbName, NULL, &dwType, szValueData, &cbData);
1919 if (lResult == ERROR_SUCCESS)
1920 {
1921 lResult = RegSetValueExW(hDestSubKey, szValueName, 0, dwType, szValueData, cbData);
1922 if (lResult)
1923 goto done;
1924 }
1925 }
1926 while(lResult == ERROR_SUCCESS);
1927
1928 lResult = ERROR_SUCCESS;
1929
1930done:
1931 if (hSrcSubKey)
1932 RegCloseKey(hSrcSubKey);
1933 if (hDestSubKey)
1934 RegCloseKey(hDestSubKey);
1935 if (lResult != ERROR_SUCCESS)
1936 SHDeleteKey(hDestKey, lpDestSubKey);
1937 return lResult;
1938}
1939
1940static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
1941{
1942 LONG lResult;
1943
1944 if (!lpSrcSubKey)
1946
1947 if (_wcsicmp(lpDestSubKey, lpSrcSubKey) == 0)
1948 {
1949 /* Destination name equals source name */
1950 return ERROR_SUCCESS;
1951 }
1952
1953 lResult = CopyKey(hDestKey, lpDestSubKey, hSrcKey, lpSrcSubKey);
1954 if (lResult == ERROR_SUCCESS)
1955 SHDeleteKey(hSrcKey, lpSrcSubKey);
1956
1957 return lResult;
1958}
1959
1960BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
1961{
1962 WCHAR msg[128], caption[128];
1963 BOOL result = FALSE;
1964 LONG lRet;
1965 HKEY hKey;
1966
1967 lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, KEY_READ|KEY_SET_VALUE, &hKey);
1968 if (lRet != ERROR_SUCCESS)
1969 {
1971 return FALSE;
1972 }
1973
1976
1978 goto done;
1979
1980 lRet = SHDeleteKey(hKeyRoot, keyPath);
1981 if (lRet != ERROR_SUCCESS)
1982 {
1983 error(hwnd, IDS_BAD_KEY, keyPath);
1984 goto done;
1985 }
1986 result = TRUE;
1987
1988done:
1990 return result;
1991}
1992
1993LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName)
1994{
1995 LPCWSTR s;
1996 LPWSTR lpNewSubKey = NULL;
1997 LONG Ret = 0;
1998 SIZE_T cbNewSubKey;
1999
2000 if (!lpSubKey)
2001 return Ret;
2002
2003 s = wcsrchr(lpSubKey, L'\\');
2004 if (s)
2005 {
2006 s++;
2007 cbNewSubKey = (s - lpSubKey + wcslen(lpNewName) + 1) * sizeof(WCHAR);
2008 lpNewSubKey = (LPWSTR) HeapAlloc(GetProcessHeap(), 0, cbNewSubKey);
2009 if (lpNewSubKey != NULL)
2010 {
2011 StringCbCopyNW(lpNewSubKey, cbNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(WCHAR));
2012 StringCbCatW(lpNewSubKey, cbNewSubKey, lpNewName);
2013 lpNewName = lpNewSubKey;
2014 }
2015 else
2017 }
2018
2019 Ret = MoveKey(hKey, lpNewName, hKey, lpSubKey);
2020
2021 if (lpNewSubKey)
2022 {
2023 HeapFree(GetProcessHeap(), 0, lpNewSubKey);
2024 }
2025 return Ret;
2026}
2027
2028LONG RenameValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpDestValue, LPCWSTR lpSrcValue)
2029{
2030 LONG lResult;
2031 HKEY hSubKey = NULL;
2032 DWORD dwType, cbData;
2033 BYTE data[512];
2034
2035 if (lpSubKey)
2036 {
2037 lResult = RegOpenKeyW(hKey, lpSubKey, &hSubKey);
2038 if (lResult != ERROR_SUCCESS)
2039 goto done;
2040 hKey = hSubKey;
2041 }
2042
2043 cbData = sizeof(data);
2044 lResult = RegQueryValueExW(hKey, lpSrcValue, NULL, &dwType, data, &cbData);
2045 if (lResult != ERROR_SUCCESS)
2046 goto done;
2047
2048 lResult = RegSetValueExW(hKey, lpDestValue, 0, dwType, data, cbData);
2049 if (lResult != ERROR_SUCCESS)
2050 goto done;
2051
2052 RegDeleteValue(hKey, lpSrcValue);
2053
2054done:
2055 if (hSubKey)
2056 RegCloseKey(hSubKey);
2057 return lResult;
2058}
2059
2060LONG QueryStringValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR pszBuffer, DWORD dwBufferLen)
2061{
2062 LONG lResult;
2063 HKEY hSubKey = NULL;
2064 DWORD cbData, dwType;
2065
2066 if (lpSubKey)
2067 {
2068 lResult = RegOpenKeyW(hKey, lpSubKey, &hSubKey);
2069 if (lResult != ERROR_SUCCESS)
2070 goto done;
2071 hKey = hSubKey;
2072 }
2073
2074 cbData = (dwBufferLen - 1) * sizeof(*pszBuffer);
2075 lResult = RegQueryValueExW(hKey, lpValueName, NULL, &dwType, (LPBYTE) pszBuffer, &cbData);
2076 if (lResult != ERROR_SUCCESS)
2077 goto done;
2078 if (dwType != REG_SZ)
2079 {
2080 lResult = -1;
2081 goto done;
2082 }
2083
2084 pszBuffer[cbData / sizeof(*pszBuffer)] = L'\0';
2085
2086done:
2087 if (lResult != ERROR_SUCCESS)
2088 pszBuffer[0] = L'\0';
2089 if (hSubKey)
2090 RegCloseKey(hSubKey);
2091 return lResult;
2092}
2093
2094BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
2095{
2096 LPCWSTR pszRootKey;
2097
2098 if (hRootKey == HKEY_CLASSES_ROOT)
2099 pszRootKey = L"HKEY_CLASSES_ROOT";
2100 else if (hRootKey == HKEY_CURRENT_USER)
2101 pszRootKey = L"HKEY_CURRENT_USER";
2102 else if (hRootKey == HKEY_LOCAL_MACHINE)
2103 pszRootKey = L"HKEY_LOCAL_MACHINE";
2104 else if (hRootKey == HKEY_USERS)
2105 pszRootKey = L"HKEY_USERS";
2106 else if (hRootKey == HKEY_CURRENT_CONFIG)
2107 pszRootKey = L"HKEY_CURRENT_CONFIG";
2108 else if (hRootKey == HKEY_DYN_DATA)
2109 pszRootKey = L"HKEY_DYN_DATA";
2110 else
2111 return FALSE;
2112
2113 if (lpSubKey[0])
2114 _snwprintf(pszDest, iDestLength, L"%s\\%s", pszRootKey, lpSubKey);
2115 else
2116 _snwprintf(pszDest, iDestLength, L"%s", pszRootKey);
2117 return TRUE;
2118}
#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 index(s, c)
Definition: various.h:29
#define IDS_BAD_VALUE
Definition: resource.h:11
ChildWnd * g_pChildWnd
Definition: childwnd.c:26
static WCHAR * stringValueData
Definition: edit.c:34
static VOID GetPortType(USHORT Flags, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:1173
static PCM_RESOURCE_LIST resourceValueData
Definition: edit.c:37
static VOID GetInterfaceType(INTERFACE_TYPE InterfaceType, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:579
static EDIT_MODE dwordEditMode
Definition: edit.c:42
INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:98
static INT_PTR CALLBACK modify_requirements_list_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1512
static DWORD valueDataLen
Definition: edit.c:39
static INT fullResourceIndex
Definition: edit.c:38
static INT_PTR CALLBACK show_requirements_port_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1278
static BOOL OnRequirementsListNotify(HWND hwndDlg, NMHDR *phdr)
Definition: edit.c:1484
static BOOL OnResourceNotify(HWND hwndDlg, NMHDR *phdr)
Definition: edit.c:864
_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:1544
static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
Definition: edit.c:1940
static INT_PTR CALLBACK modify_resource_list_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1041
BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
Definition: edit.c:1960
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:920
static BOOL CreateResourceColumns(HWND hwnd)
Definition: edit.c:441
static VOID ShowRequirement(HWND hwndDlg)
Definition: edit.c:1447
static void error_code_messagebox(HWND hwnd, DWORD error_code)
Definition: edit.c:67
static VOID AddFullResourcesToList(HWND hwnd)
Definition: edit.c:979
enum _EDIT_MODE EDIT_MODE
static VOID AddRequirementsToList(HWND hwndDlg, HWND hwnd)
Definition: edit.c:1225
static INT_PTR CALLBACK show_requirements_dma_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1413
static BOOL CreateRequirementsListColumns(HWND hWndListView)
Definition: edit.c:1074
static PVOID binValueData
Definition: edit.c:35
static INT requirementsIndex
Definition: edit.c:41
static VOID GetResourceType(UCHAR ResourceType, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:1118
static INT_PTR CALLBACK show_requirements_memory_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1327
static VOID GetMemoryAccess(USHORT Flags, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:1189
LONG RenameValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpDestValue, LPCWSTR lpSrcValue)
Definition: edit.c:2028
LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName)
Definition: edit.c:1993
LONG QueryStringValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR pszBuffer, DWORD dwBufferLen)
Definition: edit.c:2060
INT_PTR CALLBACK modify_multi_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:167
LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:235
static VOID GetShareDisposition(UCHAR ShareDisposition, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:1147
static VOID ParseResources(HWND hwnd)
Definition: edit.c:666
static BOOL OnResourceListNotify(HWND hwndDlg, NMHDR *phdr)
Definition: edit.c:1012
static PIO_RESOURCE_REQUIREMENTS_LIST requirementsValueData
Definition: edit.c:40
static INT_PTR CALLBACK show_requirements_interrupt_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1376
INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:276
BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
Definition: edit.c:2094
INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:390
static VOID GetInterruptType(USHORT Flags, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:1209
static LONG CopyKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
Definition: edit.c:1869
static BOOL CreateResourceListColumns(HWND hWndListView)
Definition: edit.c:948
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:211
#define IDC_REQ_MEMORY_MAX
Definition: resource.h:344
#define IDS_INTERRUPT_VECTOR
Definition: resource.h:208
#define IDC_DEVICE_EXCLUSIVE
Definition: resource.h:314
#define IDS_BUS_PCMCIABUS
Definition: resource.h:239
#define IDS_SPECIFIC_RESERVED2
Definition: resource.h:219
#define IDS_BUS_UNDEFINED
Definition: resource.h:230
#define IDC_REQ_DMA_PREFERRED
Definition: resource.h:362
#define IDS_BUS_NUBUS
Definition: resource.h:238
#define IDC_UNDETERMINED
Definition: resource.h:312
#define IDS_PORT_LENGTH
Definition: resource.h:216
#define IDC_FORMAT_DEC
Definition: resource.h:281
#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:213
#define IDC_REQ_MEMORY_SHARE
Definition: resource.h:345
#define IDC_REQ_MEMORY_ACCESS
Definition: resource.h:340
#define IDD_EDIT_RESOURCE
Definition: resource.h:306
#define IDS_DMA_PORT
Definition: resource.h:207
#define IDS_BUS_PNPISABUS
Definition: resource.h:245
#define IDC_REQ_PORT_TYPE
Definition: resource.h:330
#define IDC_REVISION
Definition: resource.h:319
#define IDS_BUS_TURBOCHANNEL
Definition: resource.h:235
#define IDS_MEMORY_ADDRESS
Definition: resource.h:212
#define IDS_PORT_ACCESS
Definition: resource.h:217
#define IDS_MEMORY_ACCESS
Definition: resource.h:214
#define IDC_REQ_PORT_LENGTH
Definition: resource.h:331
#define IDS_BUS_MICROCHANNEL
Definition: resource.h:234
#define IDS_BUS_EISA
Definition: resource.h:233
#define IDC_REQ_MEMORY_MIN
Definition: resource.h:343
#define IDC_REQ_INT_PREFERRED
Definition: resource.h:355
#define IDD_EDIT_REQUIREMENTS_MEMORY
Definition: resource.h:339
#define IDS_SPECIFIC_RESERVED1
Definition: resource.h:218
#define IDS_BUSNUMBER
Definition: resource.h:203
#define IDS_BUS_PROCESSORINTERNAL
Definition: resource.h:243
#define IDC_REQ_PORT_ALIGN
Definition: resource.h:332
#define IDS_SHARE_UNDETERMINED
Definition: resource.h:272
#define IDC_REQ_PORT_MAX
Definition: resource.h:334
#define IDC_VERSION
Definition: resource.h:318
#define IDC_PORT_LIST
Definition: resource.h:310
#define IDC_VALUE_DATA
Definition: resource.h:277
#define IDD_EDIT_MULTI_STRING
Definition: resource.h:283
#define IDC_SHOW_REQUIREMENT
Definition: resource.h:327
#define IDC_IRQ_LIST
Definition: resource.h:308
#define IDC_REQ_INT_ALTERNATIVE
Definition: resource.h:354
#define IDS_BUS_CBUS
Definition: resource.h:240
#define IDS_REQDESCRIPTOR
Definition: resource.h:262
#define IDC_DEVICE_LIST
Definition: resource.h:311
#define IDS_PORT_ADDRESS
Definition: resource.h:215
#define IDD_EDIT_REQUIREMENTS_DMA
Definition: resource.h:357
#define IDS_BUS_MPSABUS
Definition: resource.h:242
#define IDS_TOO_BIG_VALUE
Definition: resource.h:121
#define IDS_SHARE_DRIVER_EXCLUSIVE
Definition: resource.h:270
#define IDC_REQ_INT_TYPE
Definition: resource.h:350
#define IDS_TYPE_DMA
Definition: resource.h:268
#define IDD_EDIT_STRING
Definition: resource.h:275
#define IDS_QUERY_DELETE_KEY_CONFIRM
Definition: resource.h:155
#define IDC_BUSNUMBER
Definition: resource.h:317
#define IDC_REQ_INT_MIN
Definition: resource.h:351
#define IDC_REQ_DMA_MIN
Definition: resource.h:358
#define IDC_INTERFACETYPE
Definition: resource.h:316
#define IDS_BUS_INTERNALPOWERBUS
Definition: resource.h:244
#define IDS_BUS_PCIBUS
Definition: resource.h:236
#define IDS_REQRESOURCELIST
Definition: resource.h:261
#define IDD_EDIT_BIN_DATA
Definition: resource.h:284
#define IDD_EDIT_RESOURCE_LIST
Definition: resource.h:302
#define IDD_EDIT_REQUIREMENTS_LIST
Definition: resource.h:322
#define IDD_EDIT_REQUIREMENTS_INT
Definition: resource.h:349
#define IDC_REQ_DMA_ALTERNATIVE
Definition: resource.h:361
#define IDS_BUS_MPIBUS
Definition: resource.h:241
#define IDS_BUS_PNPBUS
Definition: resource.h:246
#define IDC_VALUE_NAME
Definition: resource.h:276
#define IDS_DEFAULT_VALUE_NAME
Definition: resource.h:126
#define IDS_BUS_INTERNAL
Definition: resource.h:231
#define IDS_BUS_VMEBUS
Definition: resource.h:237
#define IDS_BUS_UNKNOWNTYPE
Definition: resource.h:247
#define IDS_INTERRUPT_EDGE_SENSITIVE
Definition: resource.h:224
#define IDC_REQ_MEMORY_PREFERRED
Definition: resource.h:347
#define IDC_REQINTERFACETYPE
Definition: resource.h:324
#define IDC_REQ_DMA_MAX
Definition: resource.h:359
#define IDS_MEMORY_READ_WRITE
Definition: resource.h:228
#define IDS_MULTI_SZ_EMPTY_STRING
Definition: resource.h:124
#define IDS_REQALTERNATIVELIST
Definition: resource.h:260
#define IDS_TYPE_PORT
Definition: resource.h:265
#define IDS_SHARE_DEVICE_EXCLUSIVE
Definition: resource.h:269
#define IDS_REQDEVICETYPE
Definition: resource.h:263
#define IDC_REQ_PORT_SHARE
Definition: resource.h:335
#define IDC_SHARED
Definition: resource.h:313
#define IDC_REQ_PORT_MIN
Definition: resource.h:333
#define IDS_TYPE_MEMORY
Definition: resource.h:267
#define IDS_BUS_ISA
Definition: resource.h:232
#define IDS_INTERFACE
Definition: resource.h:204
#define IDS_INTERRUPT_AFFINITY
Definition: resource.h:210
#define IDC_REQ_PORT_PREFERRED
Definition: resource.h:337
#define IDC_REQ_PORT_ALTERNATIVE
Definition: resource.h:336
#define IDC_SHOW_RESOURCE
Definition: resource.h:304
#define IDS_INTERRUPT_LEVEL_SENSITIVE
Definition: resource.h:225
#define IDS_MEMORY_READ_ONLY
Definition: resource.h:226
#define IDS_PORT_PORT_IO
Definition: resource.h:222
#define IDS_PORT_MEMORY_IO
Definition: resource.h:223
#define IDC_REQ_DMA_SHARE
Definition: resource.h:360
#define IDC_DMA_LIST
Definition: resource.h:307
#define IDC_REQBUSNUMBER
Definition: resource.h:325
#define IDS_UNSUPPORTED_TYPE
Definition: resource.h:120
#define IDC_RESOURCE_LIST
Definition: resource.h:303
#define IDC_REQ_MEMORY_ALIGN
Definition: resource.h:342
#define IDD_EDIT_DWORD
Definition: resource.h:279
#define IDS_INTERRUPT_LEVEL
Definition: resource.h:209
#define IDS_MEMORY_WRITE_ONLY
Definition: resource.h:227
#define IDS_TYPE_INTERRUPT
Definition: resource.h:266
#define IDS_SPECIFIC_DATASIZE
Definition: resource.h:220
#define IDC_REQSLOTNUMBER
Definition: resource.h:326
#define IDC_REQ_MEMORY_ALTERNATIVE
Definition: resource.h:346
#define IDC_REQUIREMENTS_LIST
Definition: resource.h:323
#define IDC_FORMAT_HEX
Definition: resource.h:280
#define IDC_DRIVER_EXCLUSIVE
Definition: resource.h:315
#define IDD_EDIT_REQUIREMENTS_PORT
Definition: resource.h:329
#define IDC_MEMORY_LIST
Definition: resource.h:309
#define IDS_DMA_CHANNEL
Definition: resource.h:206
#define IDS_SHARE_SHARED
Definition: resource.h:271
#define IDC_REQ_INT_SHARE
Definition: resource.h:353
#define IDC_REQ_MEMORY_LENGTH
Definition: resource.h:341
#define IDC_REQ_INT_MAX
Definition: resource.h:352
#define RegCloseKey(hKey)
Definition: registry.h:49
HINSTANCE hInstance
Definition: charmap.c:19
Definition: bufpool.h:45
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:1096
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
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:2504
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
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:4882
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:2830
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#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
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
GLuint index
Definition: glext.h:6031
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
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 GLint GLint j
Definition: glfuncs.h:250
#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
if(dx< 0)
Definition: linetemp.h:194
#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_INTERRUPT_LEVEL_LATCHED_BITS
Definition: cmtypes.h:151
#define CM_RESOURCE_PORT_MEMORY
Definition: cmtypes.h:108
#define CM_RESOURCE_PORT_IO
Definition: cmtypes.h:109
#define CM_RESOURCE_MEMORY_READ_ONLY
Definition: cmtypes.h:121
#define CM_RESOURCE_MEMORY_READ_WRITE
Definition: cmtypes.h:120
#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:2451
#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 REG_RESOURCE_REQUIREMENTS_LIST
Definition: nt_native.h:1504
#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
unsigned short USHORT
Definition: pedump.c:61
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)
_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)
struct _IO_RESOURCE_DESCRIPTOR * PIO_RESOURCE_DESCRIPTOR
#define warning(s)
Definition: debug.h:83
#define SHDeleteKey
Definition: shlwapi.h:44
STRSAFEAPI StringCbCopyNW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToCopy)
Definition: strsafe.h:255
STRSAFEAPI StringCbVPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat, va_list argList)
Definition: strsafe.h:507
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:166
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:557
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:342
HWND hWnd
Definition: main.h:62
CM_PARTIAL_RESOURCE_LIST PartialResourceList
Definition: hwresource.cpp:160
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@389::@395 Dma
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@389 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@389::@391 Port
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@389::@392 Interrupt
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@389::@398 DeviceSpecificData
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@389::@394 Memory
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
Definition: hwresource.cpp:119
CM_FULL_RESOURCE_DESCRIPTOR List[1]
Definition: hwresource.cpp:165
union _IO_RESOURCE_DESCRIPTOR::@2043 u
struct _IO_RESOURCE_DESCRIPTOR::@2043::@2047 Dma
struct _IO_RESOURCE_DESCRIPTOR::@2043::@2046 Interrupt
struct _IO_RESOURCE_DESCRIPTOR::@2043::@2045 Memory
struct _IO_RESOURCE_DESCRIPTOR::@2043::@2044 Port
IO_RESOURCE_DESCRIPTOR Descriptors[1]
Definition: iotypes.h:2737
INTERFACE_TYPE InterfaceType
Definition: iotypes.h:2742
IO_RESOURCE_LIST List[1]
Definition: iotypes.h:2747
UINT_PTR idFrom
Definition: winuser.h:3158
UINT code
Definition: winuser.h:3159
HWND hwndFrom
Definition: winuser.h:3157
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
ULONG_PTR SIZE_T
Definition: typedefs.h:80
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:1384
const char * errstr(int errcode)
#define GetModuleHandle
Definition: winbase.h:3827
_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:831
#define GetWindowTextLength
Definition: winuser.h:5808
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:4399
#define WM_COMMAND
Definition: winuser.h:1740
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
#define WM_INITDIALOG
Definition: winuser.h:1739
#define MB_YESNO
Definition: winuser.h:817
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:830
#define MB_ICONERROR
Definition: winuser.h:787
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:1650
#define SendMessage
Definition: winuser.h:5852
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define EM_SETSEL
Definition: winuser.h:2018
#define MB_OK
Definition: winuser.h:790
#define wsprintf
Definition: winuser.h:5874
#define WM_CHAR
Definition: winuser.h:1717
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
#define MB_ICONQUESTION
Definition: winuser.h:789
#define MB_ICONSTOP
Definition: winuser.h:803
#define BN_CLICKED
Definition: winuser.h:1925
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2906
#define IDYES
Definition: winuser.h:835
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
@ CmResourceShareDeviceExclusive
Definition: cmtypes.h:241
@ CmResourceShareShared
Definition: cmtypes.h:243
@ CmResourceShareUndetermined
Definition: cmtypes.h:240
@ CmResourceShareDriverExclusive
Definition: cmtypes.h:242
struct _IO_RESOURCE_LIST * PIO_RESOURCE_LIST
#define IO_RESOURCE_ALTERNATIVE
#define IO_RESOURCE_PREFERRED
_In_ LARGE_INTEGER _Out_opt_ PLARGE_INTEGER Remainder
Definition: rtlfuncs.h:3045
unsigned char UCHAR
Definition: xmlstorage.h:181
__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