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