https://git.reactos.org/?p=reactos.git;a=commitdiff;h=da5192e622fb6f7f4917699ea27c1fd8d17b067d

commit da5192e622fb6f7f4917699ea27c1fd8d17b067d
Author:     Eric Kohl <eric.k...@reactos.org>
AuthorDate: Sun Mar 2 15:07:09 2025 +0100
Commit:     Eric Kohl <eric.k...@reactos.org>
CommitDate: Sun Mar 2 15:07:36 2025 +0100

    [BOOTDATA][NETSHELL][INF] Improvements to the network setup
    
    - Fix the network setup wizard start page.
    - Add the ndisuio driver to the network setup.
    - Remove the tcpip driver from the system setup.
---
 boot/bootdata/hivesys.inf       |  7 -----
 dll/shellext/netshell/setup.cpp | 38 ++++++++++++++++++++------
 media/inf/CMakeLists.txt        |  1 +
 media/inf/ndisuio.inf           | 60 +++++++++++++++++++++++++++++++++++++++++
 media/inf/syssetup.inf          |  1 -
 5 files changed, 91 insertions(+), 16 deletions(-)

diff --git a/boot/bootdata/hivesys.inf b/boot/bootdata/hivesys.inf
index bcd2bda1e16..1febd390b14 100644
--- a/boot/bootdata/hivesys.inf
+++ b/boot/bootdata/hivesys.inf
@@ -1735,13 +1735,6 @@ 
HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","ImagePath",0x00020000,"system
 HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Start",0x00010001,0x00000000
 HKLM,"SYSTEM\CurrentControlSet\Services\NMIDebug","Type",0x00010001,0x00000001
 
-; NDIS User I/O driver (FIXME: Should be installed via INF and started on 
demand)
-HKLM,"SYSTEM\CurrentControlSet\Services\Ndisuio","ErrorControl",0x00010001,0x00000001
-HKLM,"SYSTEM\CurrentControlSet\Services\Ndisuio","Group",0x00000000,"NDIS"
-HKLM,"SYSTEM\CurrentControlSet\Services\Ndisuio","ImagePath",0x00020000,"system32\drivers\ndisuio.sys"
-HKLM,"SYSTEM\CurrentControlSet\Services\Ndisuio","Start",0x00010001,0x00000001
-HKLM,"SYSTEM\CurrentControlSet\Services\Ndisuio","Type",0x00010001,0x00000001
-
 ; Packet driver
 
HKLM,"SYSTEM\CurrentControlSet\Services\Packet","ErrorControl",0x00010001,0x00000001
 HKLM,"SYSTEM\CurrentControlSet\Services\Packet","Group",0x00000000,"PNP_TDI"
diff --git a/dll/shellext/netshell/setup.cpp b/dll/shellext/netshell/setup.cpp
index eb469c82b3a..e2027fd5219 100644
--- a/dll/shellext/netshell/setup.cpp
+++ b/dll/shellext/netshell/setup.cpp
@@ -23,10 +23,21 @@ typedef struct _NETWORKSETUPDATA
     HWND hwndPage;
 } NETWORKSETUPDATA, *PNETWORKSETUPDATA;
 
-
 extern "C"
 {
 
+typedef struct _NETWORKCOMPONENT
+{
+    LPWSTR pszDeviceId;
+    const GUID *pClassGuid;
+} NETWORKCOMPONENT, PNETWORKCOMPONENT;
+
+static NETWORKCOMPONENT NetworkComponents[] = {
+    {(LPWSTR)L"MS_TCPIP", &GUID_DEVCLASS_NETTRANS},
+    {(LPWSTR)L"MS_NDISUIO", &GUID_DEVCLASS_NETTRANS}
+};
+
+
 static
 VOID
 SetBoldText(
@@ -52,7 +63,7 @@ InstallNetworkComponent(
     OBO_TOKEN OboToken;
     HRESULT hr;
 
-    TRACE("InstallNetworkComponent()\n");
+    TRACE("InstallNetworkComponent(%S)\n", pszComponentName);
 
     hr = CoInitialize(NULL);
     if (hr != S_OK)
@@ -169,16 +180,23 @@ InstallThreadProc(
     _In_ LPVOID lpParameter)
 {
     PNETWORKSETUPDATA pNetworkSetupData = (PNETWORKSETUPDATA)lpParameter;
+    UINT i, count;
 
     TRACE("InstallThreadProc()\n");
 
-    SendDlgItemMessage(pNetworkSetupData->hwndPage, IDC_INSTALL_PROGRESS, 
PBM_SETRANGE, 0, MAKELPARAM(0, 1));
-    SendDlgItemMessage(pNetworkSetupData->hwndPage, IDC_INSTALL_PROGRESS, 
PBM_SETPOS, 0, 0);
+    count = sizeof(NetworkComponents) / sizeof(NETWORKCOMPONENT);
+    TRACE("Network Components: %u\n", count);
 
-    InstallNetworkComponent((LPWSTR)L"MS_TCPIP", &GUID_DEVCLASS_NETTRANS);
-    SendDlgItemMessage(pNetworkSetupData->hwndPage, IDC_INSTALL_PROGRESS, 
PBM_SETPOS, 1, 0);
+    SendDlgItemMessage(pNetworkSetupData->hwndPage, IDC_INSTALL_PROGRESS, 
PBM_SETRANGE, 0, MAKELPARAM(0, count));
+    SendDlgItemMessage(pNetworkSetupData->hwndPage, IDC_INSTALL_PROGRESS, 
PBM_SETPOS, 0, 0);
 
-    Sleep(500);
+    for (i = 0; i < count; i++)
+    {
+        TRACE("Install Network Component: %S\n", 
NetworkComponents[i].pszDeviceId);
+        InstallNetworkComponent(NetworkComponents[i].pszDeviceId, 
NetworkComponents[i].pClassGuid);
+        SendDlgItemMessage(pNetworkSetupData->hwndPage, IDC_INSTALL_PROGRESS, 
PBM_SETPOS, i, 0);
+        Sleep(500);
+    }
 
     TRACE("Done\n");
 
@@ -548,11 +566,14 @@ NetSetupRequestWizardPages(
     DWORD dwPageCount = 4;
     INT nPage = 0;
 
+    TRACE("NetSetupRequestWizardPages(%p %p %p)\n", pPageCount, pPages, 
pSetupData);
+
     if (pPageCount == NULL)
         return ERROR_INVALID_PARAMETER;
 
     if (pPages == NULL)
     {
+        TRACE("Return %lu pages\n", dwPageCount);
         *pPageCount = dwPageCount;
         return ERROR_SUCCESS;
     }
@@ -560,7 +581,7 @@ NetSetupRequestWizardPages(
     if (*pPageCount < dwPageCount)
         return ERROR_BUFFER_OVERFLOW;
 
-    pSetupData->uFirstNetworkWizardPage = IDD_NETWORKSETTINGSPAGE;
+    pSetupData->uFirstNetworkWizardPage = IDD_NETWORKINITPAGE;
 
     pNetworkSetupData = (PNETWORKSETUPDATA)HeapAlloc(GetProcessHeap(), 
HEAP_ZERO_MEMORY, sizeof(NETWORKSETUPDATA));
     if (pNetworkSetupData == NULL)
@@ -604,6 +625,7 @@ NetSetupRequestWizardPages(
     psp.pszTemplate = MAKEINTRESOURCE(IDD_NETWORKDOMAINPAGE);
     pPages[nPage++] = CreatePropertySheetPage(&psp);
 
+    TRACE("Return %lu pages\n", dwPageCount);
     *pPageCount = dwPageCount;
 
     return ERROR_SUCCESS;
diff --git a/media/inf/CMakeLists.txt b/media/inf/CMakeLists.txt
index 3d67b82f841..054f64c0180 100644
--- a/media/inf/CMakeLists.txt
+++ b/media/inf/CMakeLists.txt
@@ -18,6 +18,7 @@ list(APPEND INF_FILES
     machine.inf
     monitor.inf
     msmouse.inf
+    ndisuio.inf
     NET_NIC.inf
     nettcpip.inf
     ports.inf
diff --git a/media/inf/ndisuio.inf b/media/inf/ndisuio.inf
new file mode 100644
index 00000000000..0439cfb7006
--- /dev/null
+++ b/media/inf/ndisuio.inf
@@ -0,0 +1,60 @@
+; NDISUIO.INF
+
+; Installation file for the NDIS Usermode I/O Protocol
+
+[Version]
+Signature  = "$Windows NT$"
+;Signature  = "$ReactOS$"
+LayoutFile = layout.inf
+Class      = NetTrans
+ClassGUID  = {4D36E975-E325-11CE-BFC1-08002BE10318}
+Provider   = %ReactOS%
+DriverVer  = 04/12/2006,1.00
+
+[Manufacturer]
+%ReactOS% = ReactOS
+
+[ReactOS]
+%NDISUIO_DisplayName% = Install, MS_NDISUIO
+
+;--------------------------- NDISUIO DRIVER -----------------------------
+
+[Install]
+Characteristics = 0x28
+AddReg = Inst_Ndi
+CopyFiles = CopyFiles_Sys
+
+[Inst_Ndi.NT]
+HKR,"Ndi","HelpText",0x00000000,"%NDISUIO_HelpText%"
+HKR,"Ndi","Service",0x00000000,"Ndisuio"
+HKR,"Ndi\Interfaces","UpperRange",0x00000000,"noupper"
+HKR,"Ndi\Interfaces","LowerRange",0x00000000,"ndis4,ndis5"
+
+[Install.Services]
+AddService = Ndisuio, , NDISUIO_Service_Inst
+
+[NDISUIO_Service_Inst]
+DisplayName   = "%NDISUIO_DisplayName%"
+Description   = "%NDISUIO_DisplayName%"
+ServiceType   = 1
+StartType     = 1
+ErrorControl  = 1
+ServiceBinary = %12%\ndisuio.sys
+LoadOrderGroup = NDIS
+
+[CopyFiles_Sys]
+ndisuio.sys
+
+;-------------------------------- STRINGS -------------------------------
+
+[Strings]
+; Non-localizable
+ReactOS = "ReactOS Project"
+
+; Localizable
+NDISUIO_DisplayName = "NDIS Usermode I/O Protocol"
+NDISUIO_HelpText = "A driver that supports the NDIS Usermode I/O Protocol."
+
+[Strings.0409]
+NDISUIO_DisplayName = "NDIS Benutzermodus E/A Protokoll"
+NDISUIO_HelpText = "Ein Treiber, der das NDIS Benutzermodus E/A Protokoll 
unterstützt."
diff --git a/media/inf/syssetup.inf b/media/inf/syssetup.inf
index 1ef4a04bc3d..5f12090cba1 100644
--- a/media/inf/syssetup.inf
+++ b/media/inf/syssetup.inf
@@ -20,7 +20,6 @@ machine.inf
 monitor.inf
 msmouse.inf
 NET_NIC.inf
-nettcpip.inf
 ports.inf
 scsi.inf
 unknown.inf

Reply via email to