Ignore:
Timestamp:
Nov 14, 2000, 3:27:04 PM (25 years ago)
Author:
sandervl
Message:

Handlemanager fix (MN), changes for device name lookup, com bugfix (error check) + com class now called for COMx: names

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmcomm.cpp

    r4285 r4588  
    1 /* $Id: hmcomm.cpp,v 1.5 2000-09-20 21:32:51 hugh Exp $ */
     1/* $Id: hmcomm.cpp,v 1.6 2000-11-14 14:26:59 sandervl Exp $ */
    22
    33/*
     
    1414#include <os2win.h>
    1515#include <string.h>
    16 #include "handlemanager.h"
     16#include <handlemanager.h>
     17#include <heapstring.h>
    1718#include "hmdevice.h"
    1819#include "hmcomm.h"
     
    9798} HMDEVCOMDATA, *PHMDEVCOMDATA;
    9899
    99 VOID * CreateDevData()
     100VOID *CreateDevData()
    100101{
    101102  PHMDEVCOMDATA pData;
     
    126127  if(pData!= NULL)
    127128    HMDeviceRegisterEx("COM1", this, pData);
    128   pData = CreateDevData();
    129   if(pData!= NULL)
    130     HMDeviceRegisterEx("COM2", this, pData);
    131   pData = CreateDevData();
    132   if(pData!= NULL)
    133     HMDeviceRegisterEx("COM3", this, pData);
    134   pData = CreateDevData();
    135   if(pData!= NULL)
    136     HMDeviceRegisterEx("COM4", this, pData);
    137   pData = CreateDevData();
    138   if(pData!= NULL)
    139     HMDeviceRegisterEx("COM5", this, pData);
    140   pData = CreateDevData();
    141   if(pData!= NULL)
    142     HMDeviceRegisterEx("COM6", this, pData);
    143   pData = CreateDevData();
    144   if(pData!= NULL)
    145     HMDeviceRegisterEx("COM7", this, pData);
    146   pData = CreateDevData();
    147   if(pData!= NULL)
    148     HMDeviceRegisterEx("COM8", this, pData);
     129}
     130
     131/*****************************************************************************
     132 * Name      : HMDeviceCommClass::FindDevice
     133 * Purpose   : Checks if lpDeviceName belongs to this device class
     134 * Parameters: LPCSTR lpClassDevName
     135 *             LPCSTR lpDeviceName
     136 *             int namelength
     137 * Variables :
     138 * Result    : checks if name is COMx or COMx: (x=1..8)
     139 * Remark    :
     140 * Status    :
     141 *
     142 * Author    : SvL
     143 *****************************************************************************/
     144BOOL HMDeviceCommClass::FindDevice(LPCSTR lpClassDevName, LPCSTR lpDeviceName, int namelength)
     145{
     146    if(namelength > 5)
     147        return FALSE;  //can't be com name
     148
     149    //first 3 letters 'COM'?
     150    if(lstrncmpiA(lpDeviceName, lpClassDevName, 3) != 0) {
     151        return FALSE;
     152    }
     153
     154    if(namelength == 5 && lpDeviceName[4] != ':') {
     155        return FALSE;
     156    }
     157    switch(lpDeviceName[3]) {
     158    case '1':
     159    case '2':
     160    case '3':
     161    case '4':
     162    case '5':
     163    case '6':
     164    case '7':
     165    case '8':
     166        return TRUE;    //we support up to COM8
     167    }
     168    return FALSE;
    149169}
    150170
     
    154174                                    PHMHANDLEDATA pHMHandleDataTemplate)
    155175{
     176 char comname[6];
     177
    156178  dprintf(("HMComm: Serial communication port %s open request\n", lpFileName));
    157179
     180  if(strlen(lpFileName) > 5) {
     181    return -1;  //safety check (unnecessary..)
     182  }
    158183  pHMHandleData->hHMHandle = 0;
     184
     185  strcpy(comname, lpFileName);
     186  comname[4] = 0;   //get rid of : (if present) (eg COM1:)
    159187
    160188  //AH: TODO parse Win32 security handles
    161189  OSLibDosDisableHardError(TRUE);
    162   pHMHandleData->hHMHandle = OSLibDosOpen((char*)lpFileName,
     190  pHMHandleData->hHMHandle = OSLibDosOpen(comname,
    163191                                          OSLIB_ACCESS_READWRITE |
    164192                                          OSLIB_ACCESS_SHAREDENYREAD |
     
    184212                      &((PHMDEVCOMDATA)pHMHandleData->lpHandlerData)->dcbOS2,ulLen,&ulLen);
    185213
    186     if(!rc)
     214    if(rc)
    187215    {
    188216      return -1;
Note: See TracChangeset for help on using the changeset viewer.