https://git.reactos.org/?p=reactos.git;a=commitdiff;h=da5192e622fb6f7f49176…
commit da5192e622fb6f7f4917699ea27c1fd8d17b067d
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Sun Mar 2 15:07:09 2025 +0100
Commit: Eric Kohl <eric.kohl(a)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