The source code for msports is already available in the DDK.

--
Best regards,
Alex Ionescu

On 2011-05-17, at 3:24 PM, [email protected] wrote:

> Author: ekohl
> Date: Tue May 17 19:24:19 2011
> New Revision: 51813
> 
> URL: http://svn.reactos.org/svn/reactos?rev=51813&view=rev
> Log:
> [MSPORTS]
> - Implement a simple class installer that assigns the friendly name "Serial 
> Port (COMx)" to all serial ports.
> - Enable the class installer in ports.inf.
> - Add parallel port installer configuration to ports.inf (disabled).
> 
> Added:
>    trunk/reactos/dll/win32/msports/   (with props)
>    trunk/reactos/dll/win32/msports/CMakeLists.txt   (with props)
>    trunk/reactos/dll/win32/msports/classinst.c   (with props)
>    trunk/reactos/dll/win32/msports/msports.c   (with props)
>    trunk/reactos/dll/win32/msports/msports.rbuild   (with props)
>    trunk/reactos/dll/win32/msports/msports.rc   (with props)
>    trunk/reactos/dll/win32/msports/msports.spec   (with props)
> Modified:
>    trunk/reactos/baseaddress.cmake
>    trunk/reactos/baseaddress.rbuild
>    trunk/reactos/boot/bootdata/packages/reactos.dff
>    trunk/reactos/dll/win32/CMakeLists.txt
>    trunk/reactos/dll/win32/win32.rbuild
>    trunk/reactos/media/inf/ports.inf
> 
> Modified: trunk/reactos/baseaddress.cmake
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.cmake?rev=51813&r1=51812&r2=51813&view=diff
> ==============================================================================
> --- trunk/reactos/baseaddress.cmake [iso-8859-1] (original)
> +++ trunk/reactos/baseaddress.cmake [iso-8859-1] Tue May 17 19:24:19 2011
> @@ -49,6 +49,7 @@
> set(baseaddress_netid                 0x5f660000)
> set(baseaddress_ntprint                       0x5f6a0000)
> set(baseaddress_mssip32                       0x60430000)
> +set(baseaddress_msports                      0x60450000)
> set(baseaddress_msisip                        0x60b10000)
> set(baseaddress_inseng                        0x61000000)
> set(baseaddress_qedit                 0x611c0000)
> 
> Modified: trunk/reactos/baseaddress.rbuild
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.rbuild?rev=51813&r1=51812&r2=51813&view=diff
> ==============================================================================
> --- trunk/reactos/baseaddress.rbuild [iso-8859-1] (original)
> +++ trunk/reactos/baseaddress.rbuild [iso-8859-1] Tue May 17 19:24:19 2011
> @@ -52,6 +52,7 @@
>       <property name="BASEADDRESS_NETID"              value="0x5f660000" />
>       <property name="BASEADDRESS_NTPRINT"            value="0x5f6a0000" />
>       <property name="BASEADDRESS_MSSIP32"            value="0x60430000" />
> +     <property name="BASEADDRESS_MSPORTS"            value="0x60450000" />
>       <property name="BASEADDRESS_MSISIP"             value="0x60b10000" />
>       <property name="BASEADDRESS_INSENG"             value="0x61000000" />
>       <property name="BASEADDRESS_QEDIT"              value="0x611c0000" />
> 
> Modified: trunk/reactos/boot/bootdata/packages/reactos.dff
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/reactos.dff?rev=51813&r1=51812&r2=51813&view=diff
> ==============================================================================
> --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original)
> +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Tue May 17 
> 19:24:19 2011
> @@ -357,6 +357,7 @@
> dll\win32\msisip\msisip.dll                         1
> dll\win32\msisys.ocx\msisys.ocx                     1
> dll\win32\msnet32\msnet32.dll                       1
> +dll\win32\msports\msports.dll                       1
> dll\win32\msrle32\msrle32.dll                       1
> dll\win32\mssign32\mssign32.dll                     1
> dll\win32\mssip32\mssip32.dll                       1
> 
> Modified: trunk/reactos/dll/win32/CMakeLists.txt
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/CMakeLists.txt?rev=51813&r1=51812&r2=51813&view=diff
> ==============================================================================
> --- trunk/reactos/dll/win32/CMakeLists.txt [iso-8859-1] (original)
> +++ trunk/reactos/dll/win32/CMakeLists.txt [iso-8859-1] Tue May 17 19:24:19 
> 2011
> @@ -99,6 +99,7 @@
> add_subdirectory(msisip)
> add_subdirectory(msisys.ocx)
> #add_subdirectory(msnet32) #to be deleted in trunk.
> +add_subdirectory(msports)
> add_subdirectory(msrle32)
> add_subdirectory(mssign32)
> add_subdirectory(mssip32)
> 
> Propchange: trunk/reactos/dll/win32/msports/
> ------------------------------------------------------------------------------
> --- bugtraq:logregex (added)
> +++ bugtraq:logregex Tue May 17 19:24:19 2011
> @@ -1,0 +1,2 @@
> +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
> +(\d+)
> 
> Propchange: trunk/reactos/dll/win32/msports/
> ------------------------------------------------------------------------------
>    bugtraq:message = See issue #%BUGID% for more details.
> 
> Propchange: trunk/reactos/dll/win32/msports/
> ------------------------------------------------------------------------------
>    bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
> 
> Propchange: trunk/reactos/dll/win32/msports/
> ------------------------------------------------------------------------------
>    tsvn:logminsize = 10
> 
> Added: trunk/reactos/dll/win32/msports/CMakeLists.txt
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msports/CMakeLists.txt?rev=51813&view=auto
> ==============================================================================
> --- trunk/reactos/dll/win32/msports/CMakeLists.txt (added)
> +++ trunk/reactos/dll/win32/msports/CMakeLists.txt [iso-8859-1] Tue May 17 
> 19:24:19 2011
> @@ -1,0 +1,24 @@
> +
> +set_unicode()
> +
> +spec2def(msports.dll msports.spec)
> +
> +list(APPEND SOURCE
> +    classinst.c
> +    msports.c
> +    parallel.c
> +    serial.c
> +    msports.rc
> +    ${CMAKE_CURRENT_BINARY_DIR}/msports_stubs.c
> +    ${CMAKE_CURRENT_BINARY_DIR}/msports.def)
> +
> +add_library(msports SHARED ${SOURCE})
> +
> +set_module_type(msports win32dll)
> +
> +target_link_libraries(msports wine)
> +
> +add_importlibs(msports comctl32 setupapi advapi32 user32 kernel32 ntdll)
> +
> +add_cd_file(TARGET msports DESTINATION reactos/system32 FOR all)
> +add_importlib_target(msports.spec)
> 
> Propchange: trunk/reactos/dll/win32/msports/CMakeLists.txt
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: trunk/reactos/dll/win32/msports/CMakeLists.txt
> ------------------------------------------------------------------------------
>    svn:keywords = author date id revision
> 
> Added: trunk/reactos/dll/win32/msports/classinst.c
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msports/classinst.c?rev=51813&view=auto
> ==============================================================================
> --- trunk/reactos/dll/win32/msports/classinst.c (added)
> +++ trunk/reactos/dll/win32/msports/classinst.c [iso-8859-1] Tue May 17 
> 19:24:19 2011
> @@ -1,0 +1,250 @@
> +/*
> + * PROJECT:     ReactOS system libraries
> + * LICENSE:     GPL - See COPYING in the top level directory
> + * FILE:        dlls\win32\msports\classinst.c
> + * PURPOSE:     Ports class installer
> + * PROGRAMMERS: Copyright 2011 Eric Kohl
> + */
> +
> +#include <windows.h>
> +#include <setupapi.h>
> +#include <wine/debug.h>
> +
> +WINE_DEFAULT_DEBUG_CHANNEL(msports);
> +
> +
> +typedef enum _PORT_TYPE
> +{
> +    UnknownPort,
> +    ParallelPort,
> +    SerialPort
> +} PORT_TYPE;
> +
> +
> +static DWORD
> +InstallSerialPort(IN HDEVINFO DeviceInfoSet,
> +                  IN PSP_DEVINFO_DATA DeviceInfoData)
> +{
> +    LPWSTR pszFriendlyName = L"Serial Port (COMx)";
> +
> +    TRACE("InstallSerialPort(%p, %p)\n",
> +          DeviceInfoSet, DeviceInfoData);
> +
> +    /* Install the device */
> +    if (!SetupDiInstallDevice(DeviceInfoSet,
> +                              DeviceInfoData))
> +    {
> +        return GetLastError();
> +    }
> +
> +    /* Set the friendly name for the device */
> +    SetupDiSetDeviceRegistryPropertyW(DeviceInfoSet,
> +                                      DeviceInfoData,
> +                                      SPDRP_FRIENDLYNAME,
> +                                      (LPBYTE)pszFriendlyName,
> +                                      (wcslen(pszFriendlyName) + 1) * 
> sizeof(WCHAR));
> +
> +    return ERROR_SUCCESS;
> +}
> +
> +
> +static DWORD
> +InstallParallelPort(IN HDEVINFO DeviceInfoSet,
> +                    IN PSP_DEVINFO_DATA DeviceInfoData)
> +{
> +     FIXME("InstallParallelPort(%p, %p)\n",
> +           DeviceInfoSet, DeviceInfoData);
> +     return ERROR_DI_DO_DEFAULT;
> +}
> +
> +
> +VOID
> +InstallDeviceData(IN HDEVINFO DeviceInfoSet,
> +                  IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL)
> +{
> +    HKEY hKey = NULL;
> +    HINF hInf = INVALID_HANDLE_VALUE;
> +    SP_DRVINFO_DATA DriverInfoData;
> +    PSP_DRVINFO_DETAIL_DATA DriverInfoDetailData;
> +    WCHAR InfSectionWithExt[256];
> +    BYTE buffer[2048];
> +    DWORD dwRequired;
> +
> +    TRACE("InstallDeviceData()\n");
> +
> +    hKey = SetupDiCreateDevRegKeyW(DeviceInfoSet,
> +                                   DeviceInfoData,
> +                                   DICS_FLAG_GLOBAL,
> +                                   0,
> +                                   DIREG_DRV,
> +                                   NULL,
> +                                   NULL);
> +    if (hKey == NULL)
> +        goto done;
> +
> +    DriverInfoData.cbSize = sizeof(SP_DRVINFO_DATA);
> +    if (!SetupDiGetSelectedDriverW(DeviceInfoSet,
> +                                   DeviceInfoData,
> +                                   &DriverInfoData))
> +    {
> +        goto done;
> +    }
> +
> +    DriverInfoDetailData = (PSP_DRVINFO_DETAIL_DATA)buffer;
> +    DriverInfoDetailData->cbSize = sizeof(SP_DRVINFO_DETAIL_DATA);
> +    if (!SetupDiGetDriverInfoDetailW(DeviceInfoSet,
> +                                     DeviceInfoData,
> +                                     &DriverInfoData,
> +                                     DriverInfoDetailData,
> +                                     2048,
> +                                     &dwRequired))
> +    {
> +        if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
> +            goto done;
> +    }
> +
> +    TRACE("Inf file name: %S\n", DriverInfoDetailData->InfFileName);
> +
> +    hInf = SetupOpenInfFileW(DriverInfoDetailData->InfFileName,
> +                             NULL,
> +                             INF_STYLE_WIN4,
> +                             NULL);
> +    if (hInf == INVALID_HANDLE_VALUE)
> +        goto done;
> +
> +    TRACE("Section name: %S\n", DriverInfoDetailData->SectionName);
> +
> +    SetupDiGetActualSectionToInstallW(hInf,
> +                                      DriverInfoDetailData->SectionName,
> +                                      InfSectionWithExt,
> +                                      256,
> +                                      NULL,
> +                                      NULL);
> +
> +    TRACE("InfSectionWithExt: %S\n", InfSectionWithExt);
> +
> +    SetupInstallFromInfSectionW(NULL,
> +                                hInf,
> +                                InfSectionWithExt,
> +                                SPINST_REGISTRY,
> +                                hKey,
> +                                NULL,
> +                                0,
> +                                NULL,
> +                                NULL,
> +                                NULL,
> +                                NULL);
> +
> +    TRACE("Done\n");
> +
> +done:;
> +    if (hKey != NULL)
> +        RegCloseKey(hKey);
> +
> +    if (hInf != INVALID_HANDLE_VALUE)
> +        SetupCloseInfFile(hInf);
> +}
> +
> +
> +
> +PORT_TYPE
> +GetPortType(IN HDEVINFO DeviceInfoSet,
> +            IN PSP_DEVINFO_DATA DeviceInfoData)
> +{
> +    HKEY hKey = NULL;
> +    DWORD dwSize;
> +    DWORD dwType = 0;
> +    BYTE bData = 0;
> +    PORT_TYPE PortType = UnknownPort;
> +    LONG lError;
> +
> +    TRACE("GetPortType()\n");
> +
> +    hKey = SetupDiCreateDevRegKeyW(DeviceInfoSet,
> +                                   DeviceInfoData,
> +                                   DICS_FLAG_GLOBAL,
> +                                   0,
> +                                   DIREG_DRV,
> +                                   NULL,
> +                                   NULL);
> +    if (hKey == NULL)
> +    {
> +        goto done;
> +    }
> +
> +    dwSize = sizeof(BYTE);
> +    lError = RegQueryValueExW(hKey,
> +                              L"PortSubClass",
> +                              NULL,
> +                              &dwType,
> +                              &bData,
> +                              &dwSize);
> +
> +    TRACE("lError: %ld\n", lError);
> +    TRACE("dwSize: %lu\n", dwSize);
> +    TRACE("dwType: %lu\n", dwType);
> +
> +    if (lError == ERROR_SUCCESS &&
> +        dwSize == sizeof(BYTE) &&
> +        dwType == REG_BINARY)
> +    {
> +        if (bData == 0)
> +            PortType = ParallelPort;
> +        else
> +            PortType = SerialPort;
> +    }
> +
> +done:;
> +    if (hKey != NULL)
> +        RegCloseKey(hKey);
> +
> +    TRACE("GetPortType() returns %u \n", PortType);
> +
> +    return PortType;
> +}
> +
> +
> +static DWORD
> +InstallPort(IN HDEVINFO DeviceInfoSet,
> +            IN PSP_DEVINFO_DATA DeviceInfoData)
> +{
> +    PORT_TYPE PortType;
> +
> +    InstallDeviceData(DeviceInfoSet, DeviceInfoData);
> +
> +    PortType = GetPortType(DeviceInfoSet, DeviceInfoData);
> +    switch (PortType)
> +    {
> +        case ParallelPort:
> +            return InstallParallelPort(DeviceInfoSet, DeviceInfoData);
> +
> +        case SerialPort:
> +            return InstallSerialPort(DeviceInfoSet, DeviceInfoData);
> +
> +        default:
> +            return ERROR_DI_DO_DEFAULT;
> +    }
> +}
> +
> +
> +DWORD
> +WINAPI
> +PortsClassInstaller(IN DI_FUNCTION InstallFunction,
> +                    IN HDEVINFO DeviceInfoSet,
> +                    IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL)
> +{
> +    TRACE("PortsClassInstaller(%lu, %p, %p)\n",
> +          InstallFunction, DeviceInfoSet, DeviceInfoData);
> +
> +    switch (InstallFunction)
> +    {
> +        case DIF_INSTALLDEVICE:
> +            return InstallPort(DeviceInfoSet, DeviceInfoData);
> +
> +        default:
> +            TRACE("Install function %u ignored\n", InstallFunction);
> +            return ERROR_DI_DO_DEFAULT;
> +    }
> +}
> +
> +/* EOF */
> 
> Propchange: trunk/reactos/dll/win32/msports/classinst.c
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: trunk/reactos/dll/win32/msports/classinst.c
> ------------------------------------------------------------------------------
>    svn:keywords = author date id revision
> 
> Added: trunk/reactos/dll/win32/msports/msports.c
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msports/msports.c?rev=51813&view=auto
> ==============================================================================
> --- trunk/reactos/dll/win32/msports/msports.c (added)
> +++ trunk/reactos/dll/win32/msports/msports.c [iso-8859-1] Tue May 17 
> 19:24:19 2011
> @@ -1,0 +1,33 @@
> +/*
> + * PROJECT:     Ports installer library
> + * LICENSE:     GPL - See COPYING in the top level directory
> + * FILE:        dll/win32/msports/msports.c
> + * PURPOSE:     Library main function
> + * COPYRIGHT:   Copyright 2011 Eric Kohl
> + */
> +
> +#include <windows.h>
> +#include <wine/debug.h>
> +
> +
> +WINE_DEFAULT_DEBUG_CHANNEL(msports);
> +
> +
> +BOOL
> +WINAPI
> +DllMain(HINSTANCE hinstDll,
> +        DWORD dwReason,
> +        LPVOID reserved)
> +{
> +    switch (dwReason)
> +    {
> +        case DLL_PROCESS_ATTACH:
> +            TRACE("DLL_PROCESS_ATTACH\n");
> +            DisableThreadLibraryCalls(hinstDll);
> +            break;
> +    }
> +
> +    return TRUE;
> +}
> +
> +/* EOF */
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.c
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.c
> ------------------------------------------------------------------------------
>    svn:keywords = author date id revision
> 
> Added: trunk/reactos/dll/win32/msports/msports.rbuild
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msports/msports.rbuild?rev=51813&view=auto
> ==============================================================================
> --- trunk/reactos/dll/win32/msports/msports.rbuild (added)
> +++ trunk/reactos/dll/win32/msports/msports.rbuild [iso-8859-1] Tue May 17 
> 19:24:19 2011
> @@ -1,0 +1,11 @@
> +<module name="msports" type="win32dll" baseaddress="${BASEADDRESS_MSPORTS}" 
> installbase="system32" installname="msports.dll" unicode="yes">
> +     <include base="msports">.</include>
> +     <importlibrary definition="msports.spec" />
> +     <library>wine</library>
> +     <library>kernel32</library>
> +     <library>advapi32</library>
> +     <library>setupapi</library>
> +     <file>classinst.c</file>
> +     <file>msports.c</file>
> +     <file>msports.rc</file>
> +</module>
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.rbuild
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.rbuild
> ------------------------------------------------------------------------------
>    svn:keywords = author date id revision
> 
> Added: trunk/reactos/dll/win32/msports/msports.rc
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msports/msports.rc?rev=51813&view=auto
> ==============================================================================
> --- trunk/reactos/dll/win32/msports/msports.rc (added)
> +++ trunk/reactos/dll/win32/msports/msports.rc [iso-8859-1] Tue May 17 
> 19:24:19 2011
> @@ -1,0 +1,7 @@
> +#include <windows.h>
> +
> +#define REACTOS_VERSION_DLL
> +#define REACTOS_STR_FILE_DESCRIPTION "Ports Class Installer\0"
> +#define REACTOS_STR_INTERNAL_NAME    "msports\0"
> +#define REACTOS_STR_ORIGINAL_FILENAME        "msports.dll\0"
> +#include <reactos/version.rc>
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.rc
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.rc
> ------------------------------------------------------------------------------
>    svn:keywords = author date id revision
> 
> Added: trunk/reactos/dll/win32/msports/msports.spec
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msports/msports.spec?rev=51813&view=auto
> ==============================================================================
> --- trunk/reactos/dll/win32/msports/msports.spec (added)
> +++ trunk/reactos/dll/win32/msports/msports.spec [iso-8859-1] Tue May 17 
> 19:24:19 2011
> @@ -1,0 +1,12 @@
> +@ stub ComDBClaimNextFreePort
> +@ stub ComDBClaimPort
> +@ stub ComDBClose
> +@ stub ComDBGetCurrentPortUsage
> +@ stub ComDBOpen
> +@ stub ComDBReleasePort
> +@ stub ComDBResizeDatabase
> +@ stdcall LibMain(ptr long ptr) DllMain
> +@ stub ParallelPortPropPageProvider
> +@ stdcall PortsClassInstaller(long ptr ptr)
> +@ stub SerialDisplayAdvancedSettings
> +@ stub SerialPortPropPageProvider
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.spec
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: trunk/reactos/dll/win32/msports/msports.spec
> ------------------------------------------------------------------------------
>    svn:keywords = author date id revision
> 
> Modified: trunk/reactos/dll/win32/win32.rbuild
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/win32.rbuild?rev=51813&r1=51812&r2=51813&view=diff
> ==============================================================================
> --- trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] (original)
> +++ trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] Tue May 17 19:24:19 2011
> @@ -295,6 +295,9 @@
> <directory name="msnet32">
>       <xi:include href="msnet32/msnet32.rbuild" />
> </directory>
> +<directory name="msports">
> +     <xi:include href="msports/msports.rbuild" />
> +</directory>
> <directory name="msrle32">
>       <xi:include href="msrle32/msrle32.rbuild" />
> </directory>
> 
> Modified: trunk/reactos/media/inf/ports.inf
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/ports.inf?rev=51813&r1=51812&r2=51813&view=diff
> ==============================================================================
> Binary files - no diff available.
> 
> 


_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to