ReactOS  0.4.12-dev-685-gf36cbf7
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 
26 typedef enum _EDIT_MODE
27 {
30 } EDIT_MODE;
31 
32 
33 static const WCHAR* editValueName;
38 static INT fullResourceIndex = -1;
41 
42 void 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, COUNT_OF(errfmt)))
56  wcscpy(errfmt, L"Unknown error string!");
57 
58  va_start(ap, resId);
59  _vsnwprintf(errstr, COUNT_OF(errstr), errfmt, ap);
60  va_end(ap);
61 
63 }
64 
66 {
67  WCHAR title[256];
69  wcscpy(title, L"Error");
71 }
72 
73 void 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, COUNT_OF(errfmt)))
87  wcscpy(errfmt, L"Unknown error string!");
88 
89  va_start(ap, resId);
90  _vsnwprintf(errstr, COUNT_OF(errstr), errfmt, ap);
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:
107  if (editValueName && wcscmp(editValueName, L""))
108  {
110  }
111  else
112  {
113  WCHAR buffer[255];
116  }
118  SendMessage(GetDlgItem(hwndDlg, IDC_VALUE_DATA), EM_SETSEL, 0, -1);
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:
176  if (editValueName && wcscmp(editValueName, L""))
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 
237  oldwndproc = (WNDPROC)GetWindowLongPtr(hwnd, GWLP_USERDATA);
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 
296  if (editValueName && wcscmp(editValueName, L""))
297  {
299  }
300  else
301  {
302  WCHAR buffer[255];
305  }
307  swprintf(ValueString, L"%lx", dwordValueData);
308  SetDlgItemTextW(hwndDlg, IDC_VALUE_DATA, ValueString);
309  SendMessage(GetDlgItem(hwndDlg, IDC_VALUE_DATA), EM_SETSEL, 0, -1);
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:
398  if (editValueName && wcscmp(editValueName, L""))
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
425  HexEdit_CopyBuffer(hwndValue, binValueData, len);
426  valueDataLen = len;
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;
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;
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 */
501  hwndLV = GetDlgItem(hwnd, IDC_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;
535  if (ListView_InsertColumn(hwndLV, 0, &lvC) == -1)
536  return FALSE;
537 
538  lvC.iSubItem = 1;
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;
546  if (ListView_InsertColumn(hwndLV, 2, &lvC) == -1)
547  return FALSE;
548 
549  /* Device specific list */
550  hwndLV = GetDlgItem(hwnd, IDC_DEVICE_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 
576 static VOID
578  LPWSTR pBuffer,
579  DWORD dwLength)
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;
637  case ProcessorInternal:
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 
663 static 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];
673  LVITEMW item;
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  {
703  case CmResourceTypePort:
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 
768  hwndLV = GetDlgItem(hwnd, IDC_MEMORY_LIST);
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 
810  case CmResourceTypeDma:
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 
833  hwndLV = GetDlgItem(hwnd, IDC_DEVICE_LIST);
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 
861 static BOOL
862 OnResourceNotify(HWND hwndDlg, NMHDR *phdr)
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  {
879  LVITEMW item;
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 
946 static BOOL CreateResourceListColumns(HWND hWndListView)
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;
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;
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];
981  LVITEMW item;
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 
1009 static 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 
1072 BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCWSTR valueName, BOOL EditBin)
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;
1090  binValueData = NULL;
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 */
1154  src = stringValueData;
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 
1186  src = stringValueData;
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);
1229  HeapFree(GetProcessHeap(), 0, lines);
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 
1300  resourceValueData->Count = 1;
1301  fullResourceIndex = 0;
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,
1324  0, 0, (LPBYTE)binValueData, &valueDataLen);
1325  if (lRet != ERROR_SUCCESS)
1326  {
1328  error(hwnd, IDS_BAD_VALUE, valueName);
1329  goto done;
1330  }
1331  }
1332  else
1333  {
1334  binValueData = NULL;
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 
1353 done:
1354  if (resourceValueData)
1357 
1358  if (stringValueData)
1361 
1362  return result;
1363 }
1364 
1365 static 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 
1426 done:
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 
1436 static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
1437 {
1438  LONG lResult;
1439 
1440  if (!lpSrcSubKey)
1441  return ERROR_INVALID_FUNCTION;
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 
1456 BOOL 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  {
1466  error_code_messagebox(hwnd, lRet);
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 
1484 done:
1485  RegCloseKey(hKey);
1486  return result;
1487 }
1488 
1489 LONG 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
1510  return ERROR_NOT_ENOUGH_MEMORY;
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 
1522 LONG 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 
1548 done:
1549  if (hSubKey)
1550  RegCloseKey(hSubKey);
1551  return lResult;
1552 }
1553 
1554 LONG 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 
1580 done:
1581  if (lResult != ERROR_SUCCESS)
1582  pszBuffer[0] = L'\0';
1583  if (hSubKey)
1584  RegCloseKey(hSubKey);
1585  return lResult;
1586 }
1587 
1588 BOOL 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 HKEY_USERS
Definition: winreg.h:13
#define IDC_DEVICE_LIST
Definition: resource.h:284
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2327
static EDIT_MODE dwordEditMode
Definition: edit.c:40
#define IDC_MEMORY_LIST
Definition: resource.h:282
#define IDC_UNDETERMINED
Definition: resource.h:285
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
static INT_PTR CALLBACK modify_resource_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:918
void error(HWND hwnd, INT resId,...)
Definition: edit.c:42
#define CmResourceTypeDeviceSpecific
Definition: hwresource.cpp:127
GLint GLint GLsizei width
Definition: gl.h:1546
#define IDS_PORT_MEMORY_IO
Definition: resource.h:222
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR * PCM_PARTIAL_RESOURCE_DESCRIPTOR
#define IDS_PORT_PORT_IO
Definition: resource.h:221
enum _EDIT_MODE EDIT_MODE
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
#define IDS_DEFAULT_VALUE_NAME
Definition: resource.h:128
int ErrorMessageBox(HWND hWnd, LPCWSTR lpTitle, DWORD dwErrorCode,...)
Definition: error.c:24
ChildWnd * g_pChildWnd
Definition: childwnd.c:23
#define LVCF_WIDTH
Definition: commctrl.h:2559
enum _INTERFACE_TYPE INTERFACE_TYPE
#define IDS_BAD_KEY
Definition: resource.h:144
#define ERROR_SUCCESS
Definition: deptool.c:10
#define WM_CHAR
Definition: winuser.h:1693
#define IDYES
Definition: winuser.h:829
#define KEY_SET_VALUE
Definition: nt_native.h:1017
#define IDD_EDIT_BIN_DATA
Definition: resource.h:257
#define LVCF_TEXT
Definition: commctrl.h:2560
#define IDS_MEMORY_READ_WRITE
Definition: resource.h:227
#define ERROR_INVALID_FUNCTION
Definition: dderror.h:6
CM_FULL_RESOURCE_DESCRIPTOR List[1]
Definition: hwresource.cpp:165
#define REG_BINARY
Definition: nt_native.h:1496
#define KEY_READ
Definition: nt_native.h:1023
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
#define IDS_PORT_ADDRESS
Definition: resource.h:214
__wchar_t WCHAR
Definition: xmlstorage.h:180
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
static UINT
Definition: edit.c:2325
#define IDD_EDIT_RESOURCE
Definition: resource.h:279
#define HKEY_CURRENT_USER
Definition: winreg.h:11
static INT fullResourceIndex
Definition: edit.c:38
#define IDS_SPECIFIC_DATASIZE
Definition: resource.h:219
LONG RenameValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpDestValue, LPCWSTR lpSrcValue)
Definition: edit.c:1522
static VOID GetInterfaceType(INTERFACE_TYPE InterfaceType, LPWSTR pBuffer, DWORD dwLength)
Definition: edit.c:577
#define IDS_BUSNUMBER
Definition: resource.h:202
_In_opt_ ULONG Base
Definition: rtlfuncs.h:2327
#define CALLBACK
Definition: compat.h:27
#define IDD_EDIT_STRING
Definition: resource.h:248
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2706
INT_PTR CALLBACK modify_multi_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:165
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define LVCFMT_LEFT
Definition: commctrl.h:2570
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
static const WCHAR * editValueName
Definition: edit.c:33
GLuint buffer
Definition: glext.h:5915
HWND WINAPI SetFocus(_In_opt_ HWND)
#define HKEY_DYN_DATA
Definition: winreg.h:16
#define IDS_BUS_TURBOCHANNEL
Definition: resource.h:234
#define MB_ICONSTOP
Definition: winuser.h:797
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
#define ListView_InsertItem(hwnd, pitem)
Definition: commctrl.h:2380
LONG left
Definition: windef.h:291
int32_t INT_PTR
Definition: typedefs.h:62
#define HKEY_CURRENT_CONFIG
Definition: winreg.h:15
#define WCHAR
Definition: msvc.h:43
LONG right
Definition: windef.h:293
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int32_t INT
Definition: typedefs.h:56
#define SetWindowLongPtr
Definition: treelist.c:70
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
#define IDS_INTERRUPT_VECTOR
Definition: resource.h:207
#define CmResourceTypePort
Definition: hwresource.cpp:123
static DWORD valueDataLen
Definition: edit.c:39
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:1094
LONG RenameKey(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpNewName)
Definition: edit.c:1489
UINT_PTR WPARAM
Definition: windef.h:207
#define CM_RESOURCE_MEMORY_WRITE_ONLY
Definition: cmtypes.h:122
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
#define LVIF_TEXT
Definition: commctrl.h:2281
#define IDC_FORMAT_DEC
Definition: resource.h:254
#define LVCF_SUBITEM
Definition: commctrl.h:2561
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@367::@373 Dma
static LONG CopyKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
Definition: edit.c:1365
UINT code
Definition: winuser.h:3112
CM_PARTIAL_RESOURCE_LIST PartialResourceList
Definition: hwresource.cpp:160
static PVOID binValueData
Definition: edit.c:35
static INT_PTR CALLBACK modify_resource_list_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:1039
#define LVCOLUMN
Definition: commctrl.h:2553
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
HINSTANCE hInstance
Definition: charmap.c:20
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2608
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
#define va_end(ap)
Definition: acmsvcex.h:90
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@367::@370 Interrupt
#define MB_YESNO
Definition: winuser.h:811
static const WCHAR szText[]
Definition: dialog.c:139
long LONG
Definition: pedump.c:60
#define IDC_DEVICE_EXCLUSIVE
Definition: resource.h:287
#define IDS_MULTI_SZ_EMPTY_STRING
Definition: resource.h:126
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR idFrom
Definition: winuser.h:3111
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3311
#define REG_MULTI_SZ
Definition: nt_native.h:1501
#define IDS_MEMORY_READ_ONLY
Definition: resource.h:225
static int error_code[8]
Definition: odbccp32.c:62
#define IDS_BUS_CBUS
Definition: resource.h:239
#define GWLP_USERDATA
Definition: treelist.c:63
#define CM_RESOURCE_MEMORY_READ_ONLY
Definition: cmtypes.h:121
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:2867
UINT msg
Definition: msvc.h:92
#define IDS_WARNING
Definition: resource.h:125
#define IDD_EDIT_RESOURCE_LIST
Definition: resource.h:275
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
smooth NULL
Definition: ftsmooth.c:416
PVOID pBuffer
static void error_code_messagebox(HWND hwnd, DWORD error_code)
Definition: edit.c:65
#define MB_ICONQUESTION
Definition: winuser.h:783
char * va_list
Definition: acmsvcex.h:78
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@367::@372 Memory
#define IDS_MEMORY_LENGTH
Definition: resource.h:212
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcsrchr(_In_z_ const wchar_t *_Str, _In_ wchar_t _Ch)
LRESULT CALLBACK DwordEditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:233
#define REG_RESOURCE_LIST
Definition: nt_native.h:1502
#define IDC_VALUE_DATA
Definition: resource.h:250
void * PVOID
Definition: retypes.h:9
#define REG_FULL_RESOURCE_DESCRIPTOR
Definition: nt_native.h:1503
BOOL ModifyValue(HWND hwnd, HKEY hKey, LPCWSTR valueName, BOOL EditBin)
Definition: edit.c:1072
#define isdigit(c)
Definition: acclib.h:68
#define DialogBoxW(i, t, p, f)
Definition: winuser.h:4268
static LPARAM
Definition: edit.c:2325
static PCM_RESOURCE_LIST resourceValueData
Definition: edit.c:37
eMaj lines
Definition: tritemp.h:206
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define KEY_WRITE
Definition: nt_native.h:1031
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:4917
#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_)
Definition: commctrl.h:2663
#define IDC_VERSION
Definition: resource.h:291
#define RegDeleteValue
Definition: winreg.h:508
#define COUNT_OF(a)
Definition: main.h:33
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:395
#define IDS_BUS_MPIBUS
Definition: resource.h:240
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4134
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDS_BUS_MPSABUS
Definition: resource.h:241
static DWORD DWORD * dwLength
Definition: fusion.c:83
#define IDS_TOO_BIG_VALUE
Definition: resource.h:123
#define IDS_QUERY_DELETE_KEY_CONFIRM
Definition: resource.h:157
#define IDC_DMA_LIST
Definition: resource.h:280
HWND hWnd
Definition: main.h:59
#define IDC_FORMAT_HEX
Definition: resource.h:253
static VOID AddFullResourcesToList(HWND hwnd)
Definition: edit.c:977
#define swprintf(buf, format,...)
Definition: sprintf.c:56
#define EM_SETSEL
Definition: winuser.h:1979
unsigned int UINT
Definition: ndis.h:50
#define BN_CLICKED
Definition: winuser.h:1886
unsigned long DWORD
Definition: ntddk_ex.h:95
#define IDS_QUERY_DELETE_KEY_ONE
Definition: resource.h:155
#define ListView_SetExtendedListViewStyle(hwndLV, dw)
Definition: commctrl.h:2697
#define IDS_INTERRUPT_EDGE_SENSITIVE
Definition: resource.h:223
#define IDC_SHARED
Definition: resource.h:286
#define IDS_BUS_ISA
Definition: resource.h:231
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define IDS_BUS_NUBUS
Definition: resource.h:237
#define IDC_INTERFACETYPE
Definition: resource.h:289
#define IDS_MEMORY_ACCESS
Definition: resource.h:213
#define IDS_BUS_PCIBUS
Definition: resource.h:235
#define HexEdit_LoadBuffer(hWnd, Buffer, Size)
Definition: hexedit.h:24
#define IDS_PORT_LENGTH
Definition: resource.h:215
#define IDS_INTERFACE
Definition: resource.h:203
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
Definition: hwresource.cpp:119
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
static const WCHAR L[]
Definition: oid.c:1250
#define IDC_SHOW_RESOURCE
Definition: resource.h:277
LONG QueryStringValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValueName, LPWSTR pszBuffer, DWORD dwBufferLen)
Definition: edit.c:1554
#define IDS_BAD_VALUE
Definition: resource.h:11
#define MB_ICONERROR
Definition: winuser.h:781
#define IDS_INTERRUPT_LEVEL_SENSITIVE
Definition: resource.h:224
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
unsigned char BYTE
Definition: mem.h:68
GLdouble s
Definition: gl.h:2039
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@367::@376 DeviceSpecificData
GLenum src
Definition: glext.h:6340
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@367::@369 Port
#define WM_COMMAND
Definition: winuser.h:1716
#define IDS_BUS_INTERNAL
Definition: resource.h:230
_EDIT_MODE
Definition: edit.c:26
#define IDC_BUSNUMBER
Definition: resource.h:290
HWND hwndFrom
Definition: winuser.h:3110
uint32_t DWORD_PTR
Definition: typedefs.h:63
#define NM_CLICK
Definition: commctrl.h:130
#define IDC_DRIVER_EXCLUSIVE
Definition: resource.h:288
#define GWLP_WNDPROC
Definition: treelist.c:66
INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:96
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2859
#define IDS_BUS_PNPISABUS
Definition: resource.h:244
_Check_return_ _CRTIMP int __cdecl iscntrl(_In_ int _C)
INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:388
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define IDS_INTERRUPT_TYPE
Definition: resource.h:210
#define HexEdit_CopyBuffer(hWnd, Buffer, nMax)
Definition: hexedit.h:30
#define LVCF_FMT
Definition: commctrl.h:2558
HINSTANCE hInst
Definition: dxdiag.c:13
#define IDD_EDIT_MULTI_STRING
Definition: resource.h:256
static LONG MoveKey(HKEY hDestKey, LPCWSTR lpDestSubKey, HKEY hSrcKey, LPCWSTR lpSrcSubKey)
Definition: edit.c:1436
static ATOM item
Definition: dde.c:856
_CRTIMP int __cdecl _vsnwprintf(wchar_t *_Dest, size_t _Count, const wchar_t *_Format, va_list _Args)
#define GetModuleHandle
Definition: winbase.h:3641
#define NM_DBLCLK
Definition: commctrl.h:131
static BOOL CreateResourceColumns(HWND hwnd)
Definition: edit.c:439
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1378
#define CM_RESOURCE_PORT_IO
Definition: cmtypes.h:109
struct tagNMLISTVIEW * LPNMLISTVIEW
#define IDS_BUS_EISA
Definition: resource.h:232
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
#define REG_EXPAND_SZ
Definition: nt_native.h:1494
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define HeapReAlloc
Definition: compat.h:393
static BOOL OnResourceListNotify(HWND hwndDlg, NMHDR *phdr)
Definition: edit.c:1010
BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath)
Definition: edit.c:1456
#define IDC_PORT_LIST
Definition: resource.h:283
_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 IDS_SPECIFIC_RESERVED2
Definition: resource.h:218
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define MB_OK
Definition: winuser.h:784
#define IDS_BUS_PROCESSORINTERNAL
Definition: resource.h:242
static WCHAR * stringValueData
Definition: edit.c:34
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
#define CmResourceTypeInterrupt
Definition: hwresource.cpp:124
#define IDC_VALUE_NAME
Definition: resource.h:249
#define WM_SETFONT
Definition: winuser.h:1632
#define IDS_DMA_CHANNEL
Definition: resource.h:205
#define SHDeleteKey
Definition: shlwapi.h:44
#define IDS_BUS_MICROCHANNEL
Definition: resource.h:233
#define isxdigit(c)
Definition: acclib.h:70
#define IDS_BUS_UNDEFINED
Definition: resource.h:229
#define IDS_SPECIFIC_RESERVED1
Definition: resource.h:217
static VOID ParseResources(HWND hwnd)
Definition: edit.c:664
#define IDS_ERROR
Definition: resource.h:18
static BOOL OnResourceNotify(HWND hwndDlg, NMHDR *phdr)
Definition: edit.c:862
#define ListView_GetItem(hwnd, pitem)
Definition: commctrl.h:2366
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
#define SendMessage
Definition: winuser.h:5709
#define IDS_BUS_VMEBUS
Definition: resource.h:236
#define LVIF_PARAM
Definition: commctrl.h:2283
#define CM_RESOURCE_INTERRUPT_LATCHED
Definition: cmtypes.h:144
#define IDS_UNSUPPORTED_TYPE
Definition: resource.h:122
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IDS_INTERRUPT_AFFINITY
Definition: resource.h:209
#define HIWORD(l)
Definition: typedefs.h:246
unsigned int ULONG
Definition: retypes.h:1
#define GetWindowTextLength
Definition: winuser.h:5665
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3381
INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: edit.c:274
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@367 u
static char * dest
Definition: rtl.c:135
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
#define IDS_BUS_INTERNALPOWERBUS
Definition: resource.h:243
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
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:2541
#define IDS_BUS_PCMCIABUS
Definition: resource.h:238
#define GetWindowLongPtr
Definition: treelist.c:73
#define REG_NONE
Definition: nt_native.h:1492
#define IDS_PORT_ACCESS
Definition: resource.h:216
void warning(HWND hwnd, INT resId,...)
Definition: edit.c:73
#define IDS_MEMORY_ADDRESS
Definition: resource.h:211
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define IDCANCEL
Definition: winuser.h:825
#define IDC_IRQ_LIST
Definition: resource.h:281
LONG_PTR LRESULT
Definition: windef.h:209
#define CmResourceTypeMemory
Definition: hwresource.cpp:125
#define wsprintf
Definition: winuser.h:5731
#define IDS_INTERRUPT_LEVEL
Definition: resource.h:208
#define IDS_BUS_UNKNOWNTYPE
Definition: resource.h:246
#define IDD_EDIT_DWORD
Definition: resource.h:252
static BOOL CreateResourceListColumns(HWND hWndListView)
Definition: edit.c:946
GLuint64EXT * result
Definition: glext.h:11304
#define REG_DWORD
Definition: sdbapi.c:539
#define IDS_BUS_PNPBUS
Definition: resource.h:245
const char * errstr(int errcode)
#define IDC_RESOURCE_LIST
Definition: resource.h:276
#define WM_INITDIALOG
Definition: winuser.h:1715
LPARAM lParam
Definition: combotst.c:139
static char title[]
Definition: ps.c:92
#define LOWORD(l)
Definition: pedump.c:82
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
Definition: compat.h:394
static DWORD dwordValueData
Definition: edit.c:36
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define WM_NOTIFY
Definition: richedit.h:61
#define IDS_DMA_PORT
Definition: resource.h:206
#define IDS_MEMORY_WRITE_ONLY
Definition: resource.h:226
#define CmResourceTypeDma
Definition: hwresource.cpp:126
_In_ LARGE_INTEGER _Out_opt_ PLARGE_INTEGER Remainder
Definition: rtlfuncs.h:3046
#define IDC_REVISION
Definition: resource.h:292
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:29
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HexEdit_GetBufferSize(hWnd)
Definition: hexedit.h:33
#define REG_SZ
Definition: layer.c:22
BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
Definition: edit.c:1588