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/HandleManager.cpp

    r4487 r4588  
    1 /* $Id: HandleManager.cpp,v 1.53 2000-10-16 17:56:08 sandervl Exp $ */
     1/* $Id: HandleManager.cpp,v 1.54 2000-11-14 14:26:55 sandervl Exp $ */
    22
    33/*
     
    177177{
    178178  PHMDEVICE pHMDevice;                     /* iterator over the device table */
    179 
    180   if (pszDeviceName != NULL) {
     179  int namelength = strlen(pszDeviceName);
     180
     181  if (pszDeviceName != NULL)
     182  {
    181183    for (pHMDevice = TabWin32Devices;  /* loop over all devices in the table */
    182184         pHMDevice != NULL;
    183185         pHMDevice = pHMDevice->pNext)
    184186    {
    185       if (stricmp(pHMDevice->pszDeviceName,       /* case-insensitive search */
    186                   pszDeviceName) == 0)
    187         return (pHMDevice->pDeviceHandler);    /* OK, we've found our device */
     187        if(pHMDevice->pDeviceHandler->FindDevice(pHMDevice->pszDeviceName, pszDeviceName, namelength) == TRUE)
     188        {
     189            return pHMDevice->pDeviceHandler;
     190        }
    188191    }
    189192  }
    190   int namelength = strlen(pszDeviceName);
    191 
    192   //SvL: \\.\x:                 -> drive x (i.e. \\.\C:)
    193   //     \\.\PHYSICALDRIVEn     -> drive n (n>=0)
    194   if((strncmp(pszDeviceName, "\\\\.\\", 4) == 0) &&
    195      namelength == 6 && pszDeviceName[5] == ':')
    196   {
    197         return HMGlobals.pHMDisk;
    198   }
    199   if((strncmp(pszDeviceName, "\\\\.\\PHYSICALDRIVE", 17) == 0) && namelength == 18) {
    200         return HMGlobals.pHMDisk;
    201   }
    202 
    203193  return (HMGlobals.pHMOpen32);    /* haven't found anything, return default */
    204194}
     
    219209{
    220210  PHMDEVICE pHMDevice;                     /* iterator over the device table */
     211  int namelength = strlen(pszDeviceName);
    221212
    222213  if (pszDeviceName != NULL)
     214  {
    223215    for (pHMDevice = TabWin32Devices;  /* loop over all devices in the table */
    224216         pHMDevice != NULL;
    225217         pHMDevice = pHMDevice->pNext)
    226218    {
    227       if (stricmp(pHMDevice->pszDeviceName,       /* case-insensitive search */
    228                   pszDeviceName) == 0)
    229         return (pHMDevice->pDevData);    /* OK, we've found our device */
     219        if(pHMDevice->pDeviceHandler->FindDevice(pHMDevice->pszDeviceName, pszDeviceName, namelength) == TRUE)
     220        {
     221            return (pHMDevice->pDevData);    /* OK, we've found our device */
     222        }
    230223    }
    231 
     224  }
    232225  return (NULL);    /* haven't found anything, return NULL */
    233226}
     
    259252                                                       /* free handle found ? */
    260253    if (INVALID_HANDLE_VALUE == TabWin32Handles[ulLoop].hmHandleData.hHMHandle) {
    261   TabWin32Handles[ulLoop].hmHandleData.dwUserData     = 0;
    262   TabWin32Handles[ulLoop].hmHandleData.dwInternalType = HMTYPE_UNKNOWN;
    263   TabWin32Handles[ulLoop].hmHandleData.lpDeviceData   = NULL;
    264       handleMutex.leave();
     254        TabWin32Handles[ulLoop].hmHandleData.dwUserData     = 0;
     255        TabWin32Handles[ulLoop].hmHandleData.dwInternalType = HMTYPE_UNKNOWN;
     256        TabWin32Handles[ulLoop].hmHandleData.lpDeviceData   = NULL;
     257        handleMutex.leave();
    265258        return (ulLoop);                    /* OK, then return it to the caller */
    266259    }
     
    389382  if (HMGlobals.fIsInitialized != TRUE)
    390383  {
    391     HMGlobals.fIsInitialized = TRUE;                             /* OK, done */
    392 
    393384    handleMutex.enter();
    394385    // fill handle table
     
    403394           0,
    404395           sizeof(HMGlobals));
     396
     397    HMGlobals.fIsInitialized = TRUE;                             /* OK, done */
    405398
    406399    /* copy standard handles from OS/2's Open32 Subsystem */
     
    442435  /* @@@PH we could deallocate the device list here */
    443436
    444   if(HMGlobals.pHMOpen32) 
    445         delete HMGlobals.pHMOpen32;
    446   if(HMGlobals.pHMEvent) 
    447         delete HMGlobals.pHMEvent;
    448   if(HMGlobals.pHMFile) 
    449         delete HMGlobals.pHMFile;
    450   if(HMGlobals.pHMMutex) 
    451         delete HMGlobals.pHMMutex;
    452   if(HMGlobals.pHMSemaphore) 
    453         delete HMGlobals.pHMSemaphore;
    454   if(HMGlobals.pHMFileMapping) 
    455         delete HMGlobals.pHMFileMapping;
    456   if(HMGlobals.pHMComm) 
    457         delete HMGlobals.pHMComm;
    458   if(HMGlobals.pHMToken) 
    459         delete HMGlobals.pHMToken;
    460   if(HMGlobals.pHMThread) 
    461         delete HMGlobals.pHMThread;
    462   if(HMGlobals.pHMNamedPipe) 
    463         delete HMGlobals.pHMNamedPipe;
    464   if(HMGlobals.pHMDisk) 
    465         delete HMGlobals.pHMDisk;
     437  if(HMGlobals.pHMOpen32)
     438    delete HMGlobals.pHMOpen32;
     439  if(HMGlobals.pHMEvent)
     440    delete HMGlobals.pHMEvent;
     441  if(HMGlobals.pHMFile)
     442    delete HMGlobals.pHMFile;
     443  if(HMGlobals.pHMMutex)
     444    delete HMGlobals.pHMMutex;
     445  if(HMGlobals.pHMSemaphore)
     446    delete HMGlobals.pHMSemaphore;
     447  if(HMGlobals.pHMFileMapping)
     448    delete HMGlobals.pHMFileMapping;
     449  if(HMGlobals.pHMComm)
     450    delete HMGlobals.pHMComm;
     451  if(HMGlobals.pHMToken)
     452    delete HMGlobals.pHMToken;
     453  if(HMGlobals.pHMThread)
     454    delete HMGlobals.pHMThread;
     455  if(HMGlobals.pHMNamedPipe)
     456    delete HMGlobals.pHMNamedPipe;
     457  if(HMGlobals.pHMDisk)
     458    delete HMGlobals.pHMDisk;
    466459
    467460  return (NO_ERROR);
     
    13801373  if((hFile == GetStdHandle(STD_INPUT_HANDLE)) ||
    13811374     (hFile == GetStdHandle(STD_OUTPUT_HANDLE)) ||
    1382      (hFile == GetStdHandle(STD_ERROR_HANDLE))) 
     1375     (hFile == GetStdHandle(STD_ERROR_HANDLE)))
    13831376  {
    13841377      return FILE_TYPE_CHAR;
Note: See TracChangeset for help on using the changeset viewer.