[NETCFGX] Network property page: Implement reading of configured settings. Editing...
authorEric Kohl <eric.kohl@reactos.org>
Mon, 1 Oct 2018 19:15:24 +0000 (21:15 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Mon, 1 Oct 2018 19:16:22 +0000 (21:16 +0200)
28 files changed:
dll/win32/netcfgx/lang/bg-BG.rc
dll/win32/netcfgx/lang/cs-CZ.rc
dll/win32/netcfgx/lang/da-DK.rc
dll/win32/netcfgx/lang/de-DE.rc
dll/win32/netcfgx/lang/el-GR.rc
dll/win32/netcfgx/lang/en-US.rc
dll/win32/netcfgx/lang/es-ES.rc
dll/win32/netcfgx/lang/fr-FR.rc
dll/win32/netcfgx/lang/he-IL.rc
dll/win32/netcfgx/lang/hu-HU.rc
dll/win32/netcfgx/lang/id-ID.rc
dll/win32/netcfgx/lang/it-IT.rc
dll/win32/netcfgx/lang/ja-JP.rc
dll/win32/netcfgx/lang/nl-NL.rc
dll/win32/netcfgx/lang/no-NO.rc
dll/win32/netcfgx/lang/pl-PL.rc
dll/win32/netcfgx/lang/ro-RO.rc
dll/win32/netcfgx/lang/ru-RU.rc
dll/win32/netcfgx/lang/sk-SK.rc
dll/win32/netcfgx/lang/sq-AL.rc
dll/win32/netcfgx/lang/sv-SE.rc
dll/win32/netcfgx/lang/tr-TR.rc
dll/win32/netcfgx/lang/uk-UA.rc
dll/win32/netcfgx/lang/zh-CN.rc
dll/win32/netcfgx/lang/zh-TW.rc
dll/win32/netcfgx/precomp.h
dll/win32/netcfgx/propertypage.c
dll/win32/netcfgx/resource.h

index 03b8e8a..bd32f69 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 007a4e1..073c80c 100644 (file)
@@ -206,6 +206,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 5c0d0a5..bb9fd14 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 19479ce..f81f50b 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Erweitert"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "Folgende Eigenschaften sind für diesen Netzwerkadapter verfügbar. Klicken Sie links auf die Eigenschaft, die geändert werden soll, und wählen Sie den Wert auf der rechten Seite aus.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Eigenschaft:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Wert:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Nicht vorhanden", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 3bb1fc0..bbb34b0 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index feea171..2c29dcb 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 6ea5be2..950015b 100644 (file)
@@ -202,6 +202,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index b696364..eb29c4b 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 3471618..056affb 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index d89e15d..6fe00e2 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 5bf8d0b..bc341c1 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 1be24d1..a5af3dc 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index f546e31..242fab9 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 299c0fe..dd893c8 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 4b6b0d5..96f254b 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 8ea8cf1..5bd9bf8 100644 (file)
@@ -207,6 +207,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 299eaec..97f9869 100644 (file)
@@ -206,6 +206,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index cfecc1b..4437d73 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 7ea1f8e..38ba382 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 261a22a..694945b 100644 (file)
@@ -205,6 +205,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index dd2c350..3ab171d 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 3dcaa7a..ad6db04 100644 (file)
@@ -202,6 +202,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index c4a0d1d..ac53abf 100644 (file)
@@ -200,6 +200,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 755762a..54b030f 100644 (file)
@@ -208,6 +208,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index 82f1cc5..b60cf48 100644 (file)
@@ -208,6 +208,15 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Advanced"
 FONT 8, "MS Shell Dlg"
 BEGIN
+    LTEXT "The following properties are available for this network adapter. Click the property you want to change on the left, and then select its value on the right.", -1, 7, 7, 218, 24, WS_GROUP
+    LTEXT "&Property:", -1, 7, 37, 60, 8, WS_GROUP
+    LISTBOX IDC_PROPERTY_NAME, 7, 48, 124, 124, LBS_STANDARD | WS_TABSTOP
+    LTEXT "&Value:", -1, 151, 37, 60, 8, WS_GROUP
+    EDITTEXT IDC_PROPERTY_VALUE_EDIT, 153, 48, 92, 14, ES_LEFT | ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP
+    CONTROL "", IDC_PROPERTY_VALUE_UPDN, "msctls_updown32", UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_BORDER, 232, 48, 12, 12
+    COMBOBOX IDC_PROPERTY_VALUE_LIST, 153, 48, 92, 64, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+    RADIOBUTTON "", IDC_PROPERTY_PRESENT, 141, 50, 8, 10, BS_TOP | WS_GROUP
+    RADIOBUTTON "&Not Present", IDC_PROPERTY_NOT_PRESENT, 141, 68, 103, 10, BS_TOP
 END
 
 STRINGTABLE
index b8c69a5..ed736ae 100644 (file)
@@ -14,6 +14,7 @@
 #include <windef.h>
 #include <winbase.h>
 #include <winreg.h>
+#include <windowsx.h>
 #include <objbase.h>
 #include <netcfgx.h>
 #include <setupapi.h>
index 65f6678..fe9f48f 100644 (file)
@@ -7,6 +7,441 @@
 
 #include "precomp.h"
 
+typedef enum _PARAM_TYPE
+{
+    NO_TYPE,
+    INT_TYPE,
+    LONG_TYPE,
+    WORD_TYPE,
+    DWORD_TYPE,
+    EDIT_TYPE,
+    ENUM_TYPE,
+} PARAM_TYPE, *PPARAM_TYPE;
+
+typedef struct _PARAMETER
+{
+    PWSTR pszName;
+    PWSTR pszDescription;
+    PWSTR pszValue;
+    PWSTR pszDefault;
+    PARAM_TYPE Type;
+    BOOL bUpperCase;
+    BOOL bOptional;
+    INT iLimitText;
+
+} PARAMETER, *PPARAMETER;
+
+typedef struct _PARAMETER_ARRAY
+{
+    DWORD dwCount;
+    PARAMETER Array[0];
+} PARAMETER_ARRAY, *PPARAMETER_ARRAY;
+
+
+static
+VOID
+FreeParameterArray(
+    _In_ PPARAMETER_ARRAY ParamArray)
+{
+    INT i;
+
+    if (ParamArray == NULL)
+        return;
+
+    for (i = 0; i < ParamArray->dwCount; i++)
+    {
+        if (ParamArray->Array[i].pszName != NULL)
+            HeapFree(GetProcessHeap(), 0, ParamArray->Array[i].pszName);
+
+        if (ParamArray->Array[i].pszDescription != NULL)
+            HeapFree(GetProcessHeap(), 0, ParamArray->Array[i].pszDescription);
+
+        if (ParamArray->Array[i].pszDefault != NULL)
+            HeapFree(GetProcessHeap(), 0, ParamArray->Array[i].pszDefault);
+
+    }
+
+    HeapFree(GetProcessHeap(), 0, ParamArray);
+}
+
+
+static DWORD
+GetValueString(
+    IN HKEY hKey,
+    IN LPWSTR lpValueName,
+    OUT LPWSTR *lpString)
+{
+    LPWSTR lpBuffer;
+    DWORD dwLength = 0;
+    DWORD dwRegType;
+    DWORD rc;
+
+    *lpString = NULL;
+
+    RegQueryValueExW(hKey, lpValueName, NULL, &dwRegType, NULL, &dwLength);
+
+    if (dwLength == 0 || dwRegType != REG_SZ)
+        return ERROR_FILE_NOT_FOUND;
+
+    lpBuffer = HeapAlloc(GetProcessHeap(), 0, dwLength + sizeof(WCHAR));
+    if (lpBuffer == NULL)
+        return ERROR_NOT_ENOUGH_MEMORY;
+
+    rc = RegQueryValueExW(hKey, lpValueName, NULL, NULL, (LPBYTE)lpBuffer, &dwLength);
+    if (rc != ERROR_SUCCESS)
+    {
+        HeapFree(GetProcessHeap(), 0, lpBuffer);
+        return rc;
+    }
+
+    lpBuffer[dwLength / sizeof(WCHAR)] = UNICODE_NULL;
+
+    *lpString = lpBuffer;
+
+    return ERROR_SUCCESS;
+}
+
+
+static
+BOOL
+BuildParameterArray(
+    _In_ HDEVINFO DeviceInfoSet,
+    _In_ PSP_DEVINFO_DATA DeviceInfoData,
+    _Out_ PPARAMETER_ARRAY *ParameterArray)
+{
+    HKEY hDriverKey = INVALID_HANDLE_VALUE;
+    HKEY hParamsKey = INVALID_HANDLE_VALUE;
+    HKEY hParamKey;
+    PPARAMETER_ARRAY ParamArray = NULL;
+    DWORD dwSubKeys, dwMaxSubKeyLen, dwKeyLen, dwIndex;
+    PWSTR pszType = NULL;
+    LONG lError;
+    BOOL ret = FALSE;
+
+    hDriverKey = SetupDiOpenDevRegKey(DeviceInfoSet,
+                                      DeviceInfoData,
+                                      DICS_FLAG_GLOBAL,
+                                      0,
+                                      DIREG_DRV,
+                                      KEY_READ);
+    if (hDriverKey == INVALID_HANDLE_VALUE)
+    {
+        ERR("SetupDiOpenDevRegKey() failed\n");
+        return FALSE;
+    }
+
+    lError = RegOpenKeyExW(hDriverKey,
+                           L"Ndi\\Params",
+                           0,
+                           KEY_READ,
+                           &hParamsKey);
+    if (lError != ERROR_SUCCESS)
+    {
+        ERR("RegOpenKeyExW failed (Error %lu)\n", lError);
+        goto done;
+    }
+
+    lError = RegQueryInfoKeyW(hParamsKey,
+                              NULL,
+                              NULL,
+                              NULL,
+                              &dwSubKeys,
+                              &dwMaxSubKeyLen,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL);
+    if (lError != ERROR_SUCCESS)
+    {
+        ERR("RegOpenKeyExW failed (Error %lu)\n", lError);
+        goto done;
+    }
+
+    FIXME("Sub keys: %lu\n", dwSubKeys);
+
+    if (dwSubKeys == 0)
+    {
+        TRACE("No sub keys. Done!\n");
+        goto done;
+    }
+
+    ParamArray = HeapAlloc(GetProcessHeap(),
+                           HEAP_ZERO_MEMORY,
+                           sizeof(PARAMETER_ARRAY) + (dwSubKeys * sizeof(PARAMETER)));
+    if (ParamArray == NULL)
+    {
+        ERR("Parameter array allocation failed!\n");
+        goto done;
+    }
+
+    ParamArray->dwCount = dwSubKeys;
+
+    dwMaxSubKeyLen++;
+
+    for (dwIndex = 0; dwIndex < dwSubKeys; dwIndex++)
+    {
+        ParamArray->Array[dwIndex].pszName = HeapAlloc(GetProcessHeap(),
+                                                       0,
+                                                       dwMaxSubKeyLen * sizeof(WCHAR));
+        if (ParamArray->Array[dwIndex].pszName == NULL)
+        {
+            ERR("Parameter array allocation failed!\n");
+            goto done;
+        }
+
+        dwKeyLen = dwMaxSubKeyLen;
+        lError = RegEnumKeyExW(hParamsKey,
+                               dwIndex,
+                               ParamArray->Array[dwIndex].pszName,
+                               &dwKeyLen,
+                               NULL,
+                               NULL,
+                               NULL,
+                               NULL);
+        if (lError != ERROR_SUCCESS)
+            break;
+
+        FIXME("Sub key '%S'\n", ParamArray->Array[dwIndex].pszName);
+
+        lError = RegOpenKeyExW(hParamsKey,
+                               ParamArray->Array[dwIndex].pszName,
+                               0,
+                               KEY_READ,
+                               &hParamKey);
+        if (lError == ERROR_SUCCESS)
+        {
+            GetValueString(hParamKey,
+                           L"ParamDesc",
+                           &ParamArray->Array[dwIndex].pszDescription);
+
+            GetValueString(hParamKey,
+                           L"Type",
+                           &pszType);
+            if (pszType != NULL)
+            {
+                if (_wcsicmp(pszType, L"int") == 0)
+                    ParamArray->Array[dwIndex].Type = INT_TYPE;
+                else if (_wcsicmp(pszType, L"long") == 0)
+                    ParamArray->Array[dwIndex].Type = LONG_TYPE;
+                else if (_wcsicmp(pszType, L"word") == 0)
+                    ParamArray->Array[dwIndex].Type = WORD_TYPE;
+                else if (_wcsicmp(pszType, L"dword") == 0)
+                    ParamArray->Array[dwIndex].Type = DWORD_TYPE;
+                else if (_wcsicmp(pszType, L"edit") == 0)
+                    ParamArray->Array[dwIndex].Type = EDIT_TYPE;
+                else if (_wcsicmp(pszType, L"enum") == 0)
+                    ParamArray->Array[dwIndex].Type = ENUM_TYPE;
+                else
+                    ParamArray->Array[dwIndex].Type = NO_TYPE;
+
+                HeapFree(GetProcessHeap(), 0, pszType);
+                pszType = NULL;
+            }
+
+            GetValueString(hParamKey,
+                           L"Default",
+                           &ParamArray->Array[dwIndex].pszDefault);
+
+            ParamArray->Array[dwIndex].bUpperCase = FALSE;
+            ParamArray->Array[dwIndex].bOptional = FALSE;
+            ParamArray->Array[dwIndex].iLimitText = 0;
+
+            RegCloseKey(hParamKey);
+        }
+
+        GetValueString(hDriverKey,
+                       ParamArray->Array[dwIndex].pszName,
+                       &ParamArray->Array[dwIndex].pszValue);
+    }
+
+    *ParameterArray = ParamArray;
+    ret = TRUE;
+
+done:
+    if (ret == FALSE && ParamArray != NULL)
+        FreeParameterArray(ParamArray);
+
+    if (hParamsKey != INVALID_HANDLE_VALUE)
+        RegCloseKey(hParamsKey);
+
+    if (hDriverKey != INVALID_HANDLE_VALUE)
+        RegCloseKey(hDriverKey);
+
+    return ret;
+}
+
+
+static
+VOID
+DisplayParameter(
+    HWND hwnd,
+    PPARAMETER Parameter)
+{
+    LONG_PTR Style;
+
+    ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_PRESENT), (Parameter->bOptional) ? SW_SHOW : SW_HIDE);
+    ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_NOT_PRESENT), (Parameter->bOptional) ? SW_SHOW : SW_HIDE);
+
+    switch (Parameter->Type)
+    {
+        case INT_TYPE:
+        case LONG_TYPE:
+        case WORD_TYPE:
+        case DWORD_TYPE:
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), SW_SHOW);
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_UPDN), SW_SHOW);
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_LIST), SW_HIDE);
+
+            Style = GetWindowLongPtr(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), GWL_STYLE);
+            Style |= ES_NUMBER;
+            SetWindowLongPtr(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), GWL_STYLE, Style);
+
+            Edit_LimitText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), 0);
+
+            if (Parameter->pszValue)
+                Edit_SetText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), Parameter->pszValue);
+            else if (Parameter->pszDefault)
+                Edit_SetText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), Parameter->pszDefault);
+            break;
+
+        case EDIT_TYPE:
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), SW_SHOW);
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_UPDN), SW_HIDE);
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_LIST), SW_HIDE);
+
+            Style = GetWindowLongPtr(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), GWL_STYLE);
+            Style &= ~ES_NUMBER;
+            if (Parameter->bUpperCase)
+                Style |= ES_UPPERCASE;
+            else
+                Style &= ~ES_UPPERCASE;
+            SetWindowLongPtr(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), GWL_STYLE, Style);
+
+            Edit_LimitText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), Parameter->iLimitText);
+
+            if (Parameter->pszValue)
+                Edit_SetText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), Parameter->pszValue);
+            else if (Parameter->pszDefault)
+                Edit_SetText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), Parameter->pszDefault);
+            break;
+
+        case ENUM_TYPE:
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), SW_HIDE);
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_UPDN), SW_HIDE);
+            ShowWindow(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_LIST), SW_SHOW);
+
+            if (Parameter->pszValue)
+                Edit_SetText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), Parameter->pszValue);
+            else if (Parameter->pszDefault)
+                Edit_SetText(GetDlgItem(hwnd, IDC_PROPERTY_VALUE_EDIT), Parameter->pszDefault);
+            break;
+
+        default:
+            break;
+    }
+}
+
+
+static
+BOOL
+OnInitDialog(
+    HWND hwnd,
+    WPARAM wParam,
+    LPARAM lParam)
+{
+    PPARAMETER_ARRAY pParamArray;
+    HWND hwndControl;
+    PWSTR pszText;
+    DWORD i;
+
+    FIXME("OnInitDialog()\n");
+
+    pParamArray = (PPARAMETER_ARRAY)((LPPROPSHEETPAGEW)lParam)->lParam;
+    if (pParamArray == NULL)
+    {
+        ERR("pParamArray is NULL\n");
+        return FALSE;
+    }
+
+    SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)pParamArray);
+
+    hwndControl = GetDlgItem(hwnd, IDC_PROPERTY_NAME);
+    if (hwndControl)
+    {
+        for (i = 0; i < pParamArray->dwCount; i++)
+        {
+            if (pParamArray->Array[i].pszDescription != NULL)
+                pszText = pParamArray->Array[i].pszDescription;
+            else
+                pszText = pParamArray->Array[i].pszName;
+
+            ListBox_AddString(hwndControl, pszText);
+        }
+
+        if (pParamArray->dwCount > 0)
+        {
+            ListBox_SetCurSel(hwndControl, 0);
+            DisplayParameter(hwnd, &pParamArray->Array[0]);
+        }
+    }
+
+    return TRUE;
+}
+
+
+static
+VOID
+OnCommand(
+    HWND hwnd,
+    WPARAM wParam,
+    LPARAM lParam)
+{
+    PPARAMETER_ARRAY pParamArray;
+    INT iIndex;
+
+    TRACE("OnCommand()\n");
+
+    pParamArray = (PPARAMETER_ARRAY)GetWindowLongPtr(hwnd, DWLP_USER);
+    if (pParamArray == NULL)
+    {
+        ERR("pParamArray is NULL\n");
+        return;
+    }
+
+    if ((LOWORD(wParam) == IDC_PROPERTY_NAME) && (HIWORD(wParam) == LBN_SELCHANGE))
+    {
+        iIndex = ListBox_GetCurSel((HWND)lParam);
+        if (iIndex != LB_ERR && iIndex < pParamArray->dwCount)
+        {
+            DisplayParameter(hwnd, &pParamArray->Array[iIndex]);
+        }
+    }
+}
+
+
+static
+VOID
+OnDestroy(
+    HWND hwnd)
+{
+    PPARAMETER_ARRAY pParamArray;
+
+    FIXME("OnDestroy()\n");
+
+    pParamArray = (PPARAMETER_ARRAY)GetWindowLongPtr(hwnd, DWLP_USER);
+    if (pParamArray == NULL)
+    {
+        ERR("pParamArray is NULL\n");
+        return;
+    }
+
+    FreeParameterArray(pParamArray);
+    SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)NULL);
+}
+
+
 static
 INT_PTR
 CALLBACK
@@ -19,13 +454,15 @@ NetPropertyPageDlgProc(
     switch (uMsg)
     {
         case WM_INITDIALOG:
-            ERR("NetPropertyPageDlgProc: WM_INITDIALOG\n");
-            return TRUE;
-//            return OnInitDialog(hwnd, wParam, lParam);
+            return OnInitDialog(hwnd, wParam, lParam);
 
-//        case WM_DESTROY:
-//            OnDestroy(hwnd);
-//            break;
+        case WM_COMMAND:
+            OnCommand(hwnd, wParam, lParam);
+            break;
+
+        case WM_DESTROY:
+            OnDestroy(hwnd);
+            break;
 
         default:
             break;
@@ -44,10 +481,16 @@ NetPropPageProvider(
 {
     PROPSHEETPAGEW PropSheetPage;
     HPROPSHEETPAGE hPropSheetPage;
+    PPARAMETER_ARRAY ParameterArray = NULL;
 
     ERR("NetPropPageProvider(%p %p %lx)\n",
           lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam);
 
+    if (!BuildParameterArray(lpPropSheetPageRequest->DeviceInfoSet,
+                             lpPropSheetPageRequest->DeviceInfoData,
+                             &ParameterArray))
+        return FALSE;
+
     if (lpPropSheetPageRequest->PageRequested == SPPSR_ENUM_ADV_DEVICE_PROPERTIES)
     {
         ERR("SPPSR_ENUM_ADV_DEVICE_PROPERTIES\n");
@@ -57,7 +500,7 @@ NetPropPageProvider(
         PropSheetPage.hInstance = netcfgx_hInstance;
         PropSheetPage.u.pszTemplate = MAKEINTRESOURCE(IDD_NET_PROPERTY_DLG);
         PropSheetPage.pfnDlgProc = NetPropertyPageDlgProc;
-        PropSheetPage.lParam = 0;
+        PropSheetPage.lParam = (LPARAM)ParameterArray;
         PropSheetPage.pfnCallback = NULL;
 
         hPropSheetPage = CreatePropertySheetPageW(&PropSheetPage);
index cb32ceb..ac58a22 100644 (file)
 #define IDC_PORT_DESC     7016
 #define IDC_PORT_VAL      7017
 
+#define IDC_PROPERTY_NAME        7100
+#define IDC_PROPERTY_VALUE_EDIT  7101
+#define IDC_PROPERTY_VALUE_UPDN  7102
+#define IDC_PROPERTY_VALUE_LIST  7103
+#define IDC_PROPERTY_PRESENT     7104
+#define IDC_PROPERTY_NOT_PRESENT 7105
+
 /* strings */
 #define IDS_NET_CONNECT    8000
 #define IDS_NO_IPADDR_SET  8001