Changeset 16148


Ignore:
Timestamp:
Apr 26, 2001, 3:22:49 PM (24 years ago)
Author:
sandervl
Message:

added mailslot implemenation, named pipe fixes + FreeLibraryAndExitThread

Location:
tags/trunk/src/kernel32
Files:
3 added
32 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified tags/trunk/src/kernel32/Fileio.cpp

    r16122 r16148  
    1 /* $Id: Fileio.cpp,v 1.48 2001-04-21 11:33:40 sandervl Exp $ */
     1/* $Id: Fileio.cpp,v 1.49 2001-04-26 13:22:42 sandervl Exp $ */
    22
    33/*
     
    565565ODINFUNCTION5(BOOL,         WriteFileEx,
    566566              HANDLE,       hFile,
    567               LPVOID,       lpBuffer,
     567              LPCVOID,      lpBuffer,
    568568              DWORD,        nNumberOfBytesToWrite,
    569569              LPOVERLAPPED, lpOverlapped,
     
    571571{
    572572  return (HMWriteFileEx(hFile,
    573                         lpBuffer,
     573                        (LPVOID)lpBuffer,
    574574                        nNumberOfBytesToWrite,
    575575                        lpOverlapped, lpCompletionRoutine));
  • TabularUnified tags/trunk/src/kernel32/HMObjects.cpp

    r13382 r16148  
    1 /* $Id: HMObjects.cpp,v 1.2 2000-02-16 14:24:00 sandervl Exp $ */
     1/* $Id: HMObjects.cpp,v 1.3 2001-04-26 13:22:42 sandervl Exp $ */
    22
    33/*
     
    6060 *****************************************************************************/
    6161
    62 DWORD HMDeviceKernelObjectClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     62BOOL HMDeviceKernelObjectClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    6363{
    6464  BOOL bRC;
     
    7272          bRC));
    7373
    74   return (DWORD)bRC;
     74  return bRC;
    7575}
    7676
  • TabularUnified tags/trunk/src/kernel32/HandleManager.cpp

    r15582 r16148  
    1 /* $Id: HandleManager.cpp,v 1.62 2001-01-23 18:31:25 sandervl Exp $ */
     1/* $Id: HandleManager.cpp,v 1.63 2001-04-26 13:22:42 sandervl Exp $ */
    22
    33/*
     
    6262#include "HMNPipe.h"
    6363#include "HMStd.h"
     64#include "HMMailslot.h"
     65
    6466#include <vmutex.h>
    6567#include <win\thread.h>
     
    142144  HMDeviceHandler        *pHMThread;
    143145  HMDeviceHandler        *pHMNamedPipe;
     146  HMDeviceHandler        *pHMMailslot;
    144147
    145148  ULONG         ulHandleLast;                   /* index of last used handle */
     
    422425    HMGlobals.pHMThread     = new HMDeviceThreadClass("\\\\THREAD\\");
    423426    HMGlobals.pHMNamedPipe  = new HMDeviceNamedPipeClass("\\\\PIPE\\");
     427    HMGlobals.pHMMailslot   = new HMMailslotClass("\\MAILSLOT\\");
    424428  }
    425429  return (NO_ERROR);
     
    463467  if(HMGlobals.pHMNamedPipe)
    464468    delete HMGlobals.pHMNamedPipe;
     469  if(HMGlobals.pHMMailslot)
     470    delete HMGlobals.pHMMailslot;
    465471  if(HMGlobals.pHMDisk)
    466472    delete HMGlobals.pHMDisk;
     
    41984204                                       nDefaultTimeOut,lpSecurityAttributes);
    41994205
    4200   if (rc == 0)     /* oops, creation failed within the device handler */
     4206  if (rc == -1)     /* oops, creation failed within the device handler */
    42014207  {
    42024208      TabWin32Handles[iIndexNew].hmHandleData.hHMHandle = INVALID_HANDLE_VALUE;
    4203   return 0;                                           /* signal error */
     4209      return 0;                                           /* signal error */
    42044210  }
    42054211
     
    45344540  return TRUE;
    45354541}
     4542
     4543/*****************************************************************************
     4544 * Name      : HMCreateMailslotA
     4545 * Purpose   :
     4546 * Parameters:
     4547 * Variables :
     4548 * Result    :
     4549 * Remark    :
     4550 * Status    :
     4551 *
     4552 * Author    : SvL
     4553 *****************************************************************************/
     4554HANDLE HMCreateMailslotA(LPCSTR lpName, DWORD nMaxMessageSize,
     4555                         DWORD lReadTimeout,
     4556                         LPSECURITY_ATTRIBUTES lpSecurityAttributes)
     4557{
     4558  int             iIndex;                     /* index into the handle table */
     4559  int             iIndexNew;                  /* index into the handle table */
     4560  HMMailslotClass *pDeviceHandler;            /* device handler for this handle */
     4561  PHMHANDLEDATA   pHMHandleData;
     4562  BOOL            rc;                                     /* API return code */
     4563
     4564  SetLastError(ERROR_SUCCESS);
     4565
     4566  pDeviceHandler = (HMMailslotClass *)HMGlobals.pHMMailslot;         /* device is predefined */
     4567
     4568  iIndexNew = _HMHandleGetFree();                         /* get free handle */
     4569  if (-1 == iIndexNew)                            /* oops, no free handles ! */
     4570  {
     4571    SetLastError(ERROR_NOT_ENOUGH_MEMORY);      /* use this as error message */
     4572    return 0;
     4573  }
     4574
     4575  /* initialize the complete HMHANDLEDATA structure */
     4576  pHMHandleData = &TabWin32Handles[iIndexNew].hmHandleData;
     4577  pHMHandleData->dwType     = FILE_TYPE_UNKNOWN;
     4578  pHMHandleData->dwAccess   = 0;
     4579  pHMHandleData->dwShare    = 0;
     4580  pHMHandleData->dwCreation = 0;
     4581  pHMHandleData->dwFlags    = 0;
     4582  pHMHandleData->lpHandlerData = NULL;
     4583
     4584  /* we've got to mark the handle as occupied here, since another device */
     4585  /* could be created within the device handler -> deadlock */
     4586
     4587  /* write appropriate entry into the handle table if open succeeded */
     4588  TabWin32Handles[iIndexNew].hmHandleData.hHMHandle = iIndexNew;
     4589  TabWin32Handles[iIndexNew].pDeviceHandler         = pDeviceHandler;
     4590
     4591  /* call the device handler */
     4592
     4593  rc = pDeviceHandler->CreateMailslotA(&TabWin32Handles[iIndexNew].hmHandleData,
     4594                                       lpName, nMaxMessageSize,
     4595                                       lReadTimeout, lpSecurityAttributes);
     4596
     4597  if (rc == FALSE)     /* oops, creation failed within the device handler */
     4598  {
     4599      TabWin32Handles[iIndexNew].hmHandleData.hHMHandle = INVALID_HANDLE_VALUE;
     4600      return 0;                                           /* signal error */
     4601  }
     4602
     4603  return iIndexNew;
     4604}
     4605/*****************************************************************************
     4606 * Name      : HMGetMailslotInfo
     4607 * Purpose   :
     4608 * Parameters:
     4609 * Variables :
     4610 * Result    :
     4611 * Remark    :
     4612 * Status    :
     4613 *
     4614 * Author    : SvL
     4615 *****************************************************************************/
     4616BOOL HMGetMailslotInfo(HANDLE  hMailslot,
     4617                       LPDWORD lpMaxMessageSize,
     4618                       LPDWORD lpNextSize,
     4619                       LPDWORD lpMessageCount,
     4620                       LPDWORD lpReadTimeout)
     4621{
     4622  int       iIndex;                           /* index into the handle table */
     4623  BOOL      lpResult;                /* result from the device handler's API */
     4624  PHMHANDLE pHMHandle;       /* pointer to the handle structure in the table */
     4625
     4626  SetLastError(ERROR_SUCCESS);
     4627                                                          /* validate handle */
     4628  iIndex = _HMHandleQuery(hMailslot);              /* get the index */
     4629  if (-1 == iIndex)                                               /* error ? */
     4630  {
     4631    SetLastError(ERROR_INVALID_HANDLE);       /* set win32 error information */
     4632    return FALSE;                                         /* signal failure */
     4633  }
     4634
     4635  pHMHandle = &TabWin32Handles[iIndex];               /* call device handler */
     4636  lpResult = pHMHandle->pDeviceHandler->GetMailslotInfo(&TabWin32Handles[iIndex].hmHandleData,
     4637                                                        lpMaxMessageSize,
     4638                                                        lpNextSize,
     4639                                                        lpMessageCount,
     4640                                                        lpReadTimeout);
     4641  return (lpResult);                                  /* deliver return code */
     4642}
     4643/*****************************************************************************
     4644 * Name      : HMSetMailslotInfo
     4645 * Purpose   :
     4646 * Parameters:
     4647 * Variables :
     4648 * Result    :
     4649 * Remark    :
     4650 * Status    :
     4651 *
     4652 * Author    : SvL
     4653 *****************************************************************************/
     4654BOOL HMSetMailslotInfo(HANDLE hMailslot,
     4655                       DWORD  dwReadTimeout)
     4656{
     4657  int       iIndex;                           /* index into the handle table */
     4658  BOOL      lpResult;                /* result from the device handler's API */
     4659  PHMHANDLE pHMHandle;       /* pointer to the handle structure in the table */
     4660
     4661  SetLastError(ERROR_SUCCESS);
     4662                                                          /* validate handle */
     4663  iIndex = _HMHandleQuery(hMailslot);              /* get the index */
     4664  if (-1 == iIndex)                                               /* error ? */
     4665  {
     4666    SetLastError(ERROR_INVALID_HANDLE);       /* set win32 error information */
     4667    return FALSE;                                         /* signal failure */
     4668  }
     4669
     4670  pHMHandle = &TabWin32Handles[iIndex];               /* call device handler */
     4671  lpResult = pHMHandle->pDeviceHandler->SetMailslotInfo(&TabWin32Handles[iIndex].hmHandleData,
     4672                                                       dwReadTimeout);
     4673
     4674  return (lpResult);                                  /* deliver return code */
     4675}
  • TabularUnified tags/trunk/src/kernel32/dbglocal.cpp

    r16032 r16148  
    1 /* $Id: dbglocal.cpp,v 1.14 2001-04-04 09:00:57 sandervl Exp $ */
     1/* $Id: dbglocal.cpp,v 1.15 2001-04-26 13:22:43 sandervl Exp $ */
    22
    33/*
     
    121121"hmdisk",
    122122"version",
    123 "hmstd"
     123"hmstd",
     124"module",
     125"mailslot",
     126"hmmailslot"
    124127};
    125128//******************************************************************************
  • TabularUnified tags/trunk/src/kernel32/dbglocal.h

    r16032 r16148  
    119119#define DBG_version        99
    120120#define DBG_hmstd          100
    121 #define DBG_MAXFILES       101
     121#define DBG_module         101
     122#define DBG_mailslot       102
     123#define DBG_hmmailslot     103
     124#define DBG_MAXFILES       104
    122125
    123126extern USHORT DbgEnabled[DBG_MAXFILES];
  • TabularUnified tags/trunk/src/kernel32/hmcomm.cpp

    r15602 r16148  
    1 /* $Id: hmcomm.cpp,v 1.9 2001-01-29 23:42:25 sandervl Exp $ */
     1/* $Id: hmcomm.cpp,v 1.10 2001-04-26 13:22:43 sandervl Exp $ */
    22
    33/*
     
    247247
    248248                      /* this is a handler method for calls to CloseHandle() */
    249 DWORD HMDeviceCommClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     249BOOL HMDeviceCommClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    250250{
    251251  dprintf(("HMComm: Serial communication port close request\n"));
  • TabularUnified tags/trunk/src/kernel32/hmcomm.h

    r15429 r16148  
    1 /* $Id: hmcomm.h,v 1.7 2000-12-31 12:28:54 sandervl Exp $ */
     1/* $Id: hmcomm.h,v 1.8 2001-04-26 13:22:44 sandervl Exp $ */
    22
    33/*
     
    3434
    3535  /* this is the handler method for calls to CloseHandle() */
    36   virtual DWORD CloseHandle(PHMHANDLEDATA pHMHandleData);
     36  virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
    3737
    3838  /* this is the handler method for SetComm() */
  • TabularUnified tags/trunk/src/kernel32/hmdevice.cpp

    r15575 r16148  
    1 /* $Id: hmdevice.cpp,v 1.25 2001-01-22 18:26:50 sandervl Exp $ */
     1/* $Id: hmdevice.cpp,v 1.26 2001-04-26 13:22:44 sandervl Exp $ */
    22
    33/*
     
    197197 *****************************************************************************/
    198198
    199 DWORD HMDeviceHandler::CloseHandle(PHMHANDLEDATA pHMHandleData)
     199BOOL HMDeviceHandler::CloseHandle(PHMHANDLEDATA pHMHandleData)
    200200{
    201201  dprintf(("KERNEL32:HandleManager::CloseHandle %s(%08x) - stub?\n",
     
    18531853    return(FALSE);
    18541854}
     1855/*****************************************************************************
     1856 * Name      : BOOL HMDeviceHandler::GetMailslotInfo
     1857 * Purpose   :
     1858 * Variables :
     1859 * Result    :
     1860 * Remark    :
     1861 * Status    :
     1862 *
     1863 * Author    : SvL
     1864 *****************************************************************************/
     1865BOOL HMDeviceHandler::GetMailslotInfo(PHMHANDLEDATA pHMHandleData,
     1866                                      LPDWORD lpMaxMessageSize,
     1867                                      LPDWORD lpNextSize,
     1868                                      LPDWORD lpMessageCount,
     1869                                      LPDWORD lpReadTimeout)
     1870{
     1871    dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::GetMailslotInfo %08x",
     1872              pHMHandleData->hHMHandle));
     1873
     1874    return(FALSE);
     1875}
     1876/*****************************************************************************
     1877 * Name      : BOOL HMDeviceHandler::SetMailslotInfo
     1878 * Purpose   :
     1879 * Variables :
     1880 * Result    :
     1881 * Remark    :
     1882 * Status    :
     1883 *
     1884 * Author    : SvL
     1885 *****************************************************************************/
     1886BOOL HMDeviceHandler::SetMailslotInfo(PHMHANDLEDATA pHMHandleData,
     1887                                      DWORD  dwReadTimeout)
     1888{
     1889    dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::SetMailslotInfo %08x %x",
     1890              pHMHandleData->hHMHandle, dwReadTimeout));
     1891
     1892    return(FALSE);
     1893}
  • TabularUnified tags/trunk/src/kernel32/hmdevice.h

    r15575 r16148  
    1 /* $Id: hmdevice.h,v 1.25 2001-01-22 18:26:50 sandervl Exp $ */
     1/* $Id: hmdevice.h,v 1.26 2001-04-26 13:22:44 sandervl Exp $ */
    22
    33/*
     
    108108
    109109                      /* this is a handler method for calls to CloseHandle() */
    110   virtual DWORD  CloseHandle(PHMHANDLEDATA pHMHandleData);
     110  virtual BOOL   CloseHandle(PHMHANDLEDATA pHMHandleData);
    111111
    112112                           /* this is a handler method for calls to ReadFile() */
     
    442442                           DWORD         cbPipe);
    443443
     444  virtual BOOL GetMailslotInfo(PHMHANDLEDATA pHMHandleData,
     445                               LPDWORD lpMaxMessageSize,
     446                               LPDWORD lpNextSize,
     447                               LPDWORD lpMessageCount,
     448                               LPDWORD lpReadTimeout);
     449
     450  virtual BOOL SetMailslotInfo(PHMHANDLEDATA pHMHandleData,
     451                               DWORD  dwReadTimeout);
    444452};
    445453
  • TabularUnified tags/trunk/src/kernel32/hmdevio.cpp

    r15598 r16148  
    1 /* $Id: hmdevio.cpp,v 1.8 2001-01-29 00:47:55 bird Exp $ */
     1/* $Id: hmdevio.cpp,v 1.9 2001-04-26 13:22:44 sandervl Exp $ */
    22
    33/*
     
    147147//******************************************************************************
    148148//******************************************************************************
    149 DWORD HMDeviceDriver::CloseHandle(PHMHANDLEDATA pHMHandleData)
     149BOOL HMDeviceDriver::CloseHandle(PHMHANDLEDATA pHMHandleData)
    150150{
    151151 DWORD rc = 0;
  • TabularUnified tags/trunk/src/kernel32/hmdevio.h

    r12299 r16148  
    1 /* $Id: hmdevio.h,v 1.1 1999-11-12 14:57:15 sandervl Exp $ */
     1/* $Id: hmdevio.h,v 1.2 2001-04-26 13:22:44 sandervl Exp $ */
    22
    33#ifndef __DEVIO_H__
     
    126126                             PHMHANDLEDATA pHMHandleDataTemplate);
    127127
    128   virtual DWORD  CloseHandle(PHMHANDLEDATA pHMHandleData);
     128  virtual BOOL  CloseHandle(PHMHANDLEDATA pHMHandleData);
    129129
    130130                    /* this is a handler method for calls to DeviceIoControl() */
  • TabularUnified tags/trunk/src/kernel32/hmdisk.cpp

    r15959 r16148  
    1 /* $Id: hmdisk.cpp,v 1.5 2001-03-29 17:39:51 sandervl Exp $ */
     1/* $Id: hmdisk.cpp,v 1.6 2001-04-26 13:22:45 sandervl Exp $ */
    22
    33/*
     
    119119//******************************************************************************
    120120//******************************************************************************
    121 DWORD HMDeviceDiskClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     121BOOL HMDeviceDiskClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    122122{
    123123    if(pHMHandleData->hHMHandle) {
  • TabularUnified tags/trunk/src/kernel32/hmdisk.h

    r15155 r16148  
    1 /* $Id: hmdisk.h,v 1.2 2000-11-14 14:27:04 sandervl Exp $ */
     1/* $Id: hmdisk.h,v 1.3 2001-04-26 13:22:45 sandervl Exp $ */
    22
    33#ifndef __HMDISK_H__
     
    3030                             PHMHANDLEDATA pHMHandleDataTemplate);
    3131
    32   virtual DWORD  CloseHandle(PHMHANDLEDATA pHMHandleData);
     32  virtual BOOL   CloseHandle(PHMHANDLEDATA pHMHandleData);
    3333
    3434  /* this is a handler method for calls to DeviceIoControl() */
  • TabularUnified tags/trunk/src/kernel32/hmfile.cpp

    r15250 r16148  
    1 /* $Id: hmfile.cpp,v 1.25 2000-11-23 19:39:51 sandervl Exp $ */
     1/* $Id: hmfile.cpp,v 1.26 2001-04-26 13:22:45 sandervl Exp $ */
    22
    33/*
     
    394394
    395395/*****************************************************************************
    396  * Name      : DWORD HMDeviceFileClass::CloseHandle
     396 * Name      : BOOL HMDeviceFileClass::CloseHandle
    397397 * Purpose   : close the handle
    398398 * Parameters: PHMHANDLEDATA pHMHandleData
     
    405405 *****************************************************************************/
    406406
    407 DWORD HMDeviceFileClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     407BOOL HMDeviceFileClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    408408{
    409409  HMFileInfo *fileInfo = (HMFileInfo *)pHMHandleData->dwUserData;
  • TabularUnified tags/trunk/src/kernel32/hmfile.h

    r15249 r16148  
    1 /* $Id: hmfile.h,v 1.4 2000-11-23 19:23:50 sandervl Exp $ */
     1/* $Id: hmfile.h,v 1.5 2001-04-26 13:22:45 sandervl Exp $ */
    22
    33/*
     
    6666
    6767                      /* this is a handler method for calls to CloseHandle() */
    68   virtual DWORD  CloseHandle(PHMHANDLEDATA pHMHandleData);
     68  virtual BOOL   CloseHandle(PHMHANDLEDATA pHMHandleData);
    6969
    7070                           /* this is a handler method for calls to ReadFile() */
  • TabularUnified tags/trunk/src/kernel32/hmmmap.cpp

    r15575 r16148  
    1 /* $Id: hmmmap.cpp,v 1.16 2001-01-22 18:26:51 sandervl Exp $ */
     1/* $Id: hmmmap.cpp,v 1.17 2001-04-26 13:22:46 sandervl Exp $ */
    22
    33/*
     
    207207//******************************************************************************
    208208//******************************************************************************
    209 DWORD HMDeviceMemMapClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     209BOOL HMDeviceMemMapClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    210210{
    211211 Win32MemMap *map;
     
    214214  if(pHMHandleData->dwUserData == NULL || pHMHandleData->dwInternalType != HMTYPE_MEMMAP) {
    215215        dprintf(("MapViewOfFileEx: invalid handle data!"));
    216         return ERROR_INVALID_HANDLE;
     216        return FALSE;
    217217  }
    218218  //Although an application may close the file handle used to create a file
     
    222222  map->Release();
    223223
    224   return NO_ERROR;
    225 }
    226 //******************************************************************************
    227 //******************************************************************************
     224  return TRUE;
     225}
     226//******************************************************************************
     227//******************************************************************************
  • TabularUnified tags/trunk/src/kernel32/hmmmap.h

    r15575 r16148  
    1 /* $Id: hmmmap.h,v 1.5 2001-01-22 18:26:51 sandervl Exp $ */
     1/* $Id: hmmmap.h,v 1.6 2001-04-26 13:22:46 sandervl Exp $ */
    22
    33/*
     
    5757                                     LPVOID                     lpBaseAddress);
    5858
    59   virtual DWORD CloseHandle(PHMHANDLEDATA pHMHandleData);
     59  virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
    6060};
    6161
  • TabularUnified tags/trunk/src/kernel32/hmnpipe.cpp

    r14390 r16148  
    1 /* $Id: hmnpipe.cpp,v 1.1 2000-07-12 18:21:43 sandervl Exp $ */
     1/* $Id: hmnpipe.cpp,v 1.2 2001-04-26 13:22:46 sandervl Exp $ */
    22/*
    33 * Project Odin Software License can be found in LICENSE.TXT
     
    8484  return (pHMHandleData->hHMHandle);
    8585}
    86 
     86/*****************************************************************************
     87 * Name      : DWORD HMDeviceNamedPipeClass::CreateFile
     88 * Purpose   : this is called from the handle manager if a CreateFile() is
     89 *             performed on a handle
     90 * Parameters: LPCSTR        lpFileName            name of the file / device
     91 *             PHMHANDLEDATA pHMHandleData         data of the NEW handle
     92 *             PVOID         lpSecurityAttributes  ignored
     93 *             PHMHANDLEDATA pHMHandleDataTemplate data of the template handle
     94 * Variables :
     95 * Result    :
     96 * Remark    :
     97 * Status    : NO_ERROR - API succeeded
     98 *             other    - what is to be set in SetLastError
     99 *
     100 * Author    : SvL
     101 *****************************************************************************/
     102
     103DWORD HMDeviceNamedPipeClass::CreateFile (LPCSTR        lpFileName,
     104                                          PHMHANDLEDATA pHMHandleData,
     105                                          PVOID         lpSecurityAttributes,
     106                                          PHMHANDLEDATA pHMHandleDataTemplate)
     107{
     108   pHMHandleData->hHMHandle = OSLibDosOpenPipe(lpFileName,
     109                                               pHMHandleData->dwAccess,
     110                                               pHMHandleData->dwShare,
     111                                               (LPSECURITY_ATTRIBUTES)lpSecurityAttributes,
     112                                               pHMHandleData->dwCreation,
     113                                               pHMHandleData->dwFlags);
     114   if(pHMHandleData->hHMHandle == -1) {
     115      return GetLastError();
     116   }
     117   return ERROR_SUCCESS;
     118}
     119
     120/*****************************************************************************
     121 * Name      : DWORD HMDeviceNamedPipeClass::CloseHandle
     122 * Purpose   : close the handle
     123 * Parameters: PHMHANDLEDATA pHMHandleData
     124 * Variables :
     125 * Result    : API returncode
     126 * Remark    :
     127 * Status    :
     128 *
     129 * Author    : SvL
     130 *****************************************************************************/
     131
     132BOOL HMDeviceNamedPipeClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     133{
     134  dprintf(("KERNEL32: HMDeviceNamedPipeClass::CloseHandle(%08x)", pHMHandleData->hHMHandle));
     135
     136  return OSLibDosClose(pHMHandleData->hHMHandle);
     137}
    87138//******************************************************************************
    88139//******************************************************************************
     
    197248                                                LPDWORD lpdwCollectDataTimeout)
    198249{
    199   dprintf(("KERNEL32: HMDeviceNamedPipeClass::SetNamedPipeInfo (%s) (%08xh,%08xh,%08xh) NIY\n",
     250  BOOL ret;
     251
     252  dprintf(("KERNEL32: HMDeviceNamedPipeClass::SetNamedPipeInfo (%s) (%08xh,%08xh,%08xh)",
    200253           lpdwMode,lpcbMaxCollect,lpdwCollectDataTimeout));
    201254
    202   return (FALSE);
     255  if(lpdwMode) {
     256     ret = OSLibSetNamedPipeState(pHMHandleData->hHMHandle, *lpdwMode);
     257  }
     258  if(lpcbMaxCollect || lpdwCollectDataTimeout) {
     259     dprintf(("WARNING: Not supported -> lpcbMaxCollect & lpdwCollectDataTimeout"));
     260  }
     261  return ret;
    203262}
    204263
  • TabularUnified tags/trunk/src/kernel32/hmnpipe.h

    r14390 r16148  
    1 /* $Id: hmnpipe.h,v 1.1 2000-07-12 18:21:44 sandervl Exp $ */
     1/* $Id: hmnpipe.h,v 1.2 2001-04-26 13:22:46 sandervl Exp $ */
    22/*
    33 * Project Odin Software License can be found in LICENSE.TXT
     
    2828                                DWORD  nInBufferSize, DWORD  nDefaultTimeOut,
    2929                                LPSECURITY_ATTRIBUTES lpSecurityAttributes);
     30
     31  /* this is a handler method for calls to CreateFile() */
     32  virtual DWORD  CreateFile (LPCSTR        lpFileName,
     33                             PHMHANDLEDATA pHMHandleData,
     34                             PVOID         lpSecurityAttributes,
     35                             PHMHANDLEDATA pHMHandleDataTemplate);
     36
     37  /* this is a handler method for calls to CloseHandle() */
     38  virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
    3039
    3140  virtual BOOL ConnectNamedPipe(PHMHANDLEDATA pHMHandleData, LPOVERLAPPED lpOverlapped);
  • TabularUnified tags/trunk/src/kernel32/hmobjects.h

    r10902 r16148  
    1 /* $Id: hmobjects.h,v 1.1 1999-07-06 15:48:47 phaller Exp $ */
     1/* $Id: hmobjects.h,v 1.2 2001-04-26 13:22:46 sandervl Exp $ */
    22
    33/*
     
    3434
    3535                      /* this is a handler method for calls to CloseHandle() */
    36   virtual DWORD  CloseHandle(PHMHANDLEDATA pHMHandleData);
     36  virtual BOOL  CloseHandle(PHMHANDLEDATA pHMHandleData);
    3737};
    3838
  • TabularUnified tags/trunk/src/kernel32/hmopen32.cpp

    r15893 r16148  
    1 /* $Id: hmopen32.cpp,v 1.28 2001-03-19 19:27:13 sandervl Exp $ */
     1/* $Id: hmopen32.cpp,v 1.29 2001-04-26 13:22:47 sandervl Exp $ */
    22
    33/*
     
    8383 *****************************************************************************/
    8484
    85 DWORD HMDeviceOpen32Class::CloseHandle(PHMHANDLEDATA pHMHandleData)
     85BOOL HMDeviceOpen32Class::CloseHandle(PHMHANDLEDATA pHMHandleData)
    8686{
    8787  BOOL bRC;
     
    9595           bRC));
    9696
    97   return (DWORD)bRC;
     97  return bRC;
    9898}
    9999
  • TabularUnified tags/trunk/src/kernel32/hmopen32.h

    r14519 r16148  
    1 /* $Id: hmopen32.h,v 1.7 2000-08-04 21:12:08 sandervl Exp $ */
     1/* $Id: hmopen32.h,v 1.8 2001-04-26 13:22:47 sandervl Exp $ */
    22
    33/*
     
    5252
    5353                      /* this is a handler method for calls to CloseHandle() */
    54   virtual DWORD  CloseHandle(PHMHANDLEDATA pHMHandleData);
     54  virtual BOOL   CloseHandle(PHMHANDLEDATA pHMHandleData);
    5555
    5656                      /* this is a handler method for calls to GetFileType() */
  • TabularUnified tags/trunk/src/kernel32/hmthread.cpp

    r15893 r16148  
    1 /* $Id: hmthread.cpp,v 1.6 2001-03-19 19:27:13 sandervl Exp $ */
     1/* $Id: hmthread.cpp,v 1.7 2001-04-26 13:22:47 sandervl Exp $ */
    22
    33/*
     
    178178//******************************************************************************
    179179//******************************************************************************
    180 DWORD HMDeviceThreadClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    181 {
    182   return STATUS_SUCCESS;
     180BOOL HMDeviceThreadClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     181{
     182  return TRUE;
    183183}
    184184//******************************************************************************
  • TabularUnified tags/trunk/src/kernel32/hmthread.h

    r13719 r16148  
    1 /* $Id: hmthread.h,v 1.2 2000-03-17 16:08:40 sandervl Exp $ */
     1/* $Id: hmthread.h,v 1.3 2001-04-26 13:22:47 sandervl Exp $ */
    22
    33/*
     
    5454  virtual BOOL   SetThreadTerminated(PHMHANDLEDATA pHMHandleData);
    5555
    56   virtual DWORD CloseHandle(PHMHANDLEDATA pHMHandleData);
     56  virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
    5757};
    5858
  • TabularUnified tags/trunk/src/kernel32/hmtoken.cpp

    r15225 r16148  
    1 /* $Id: hmtoken.cpp,v 1.4 2000-11-21 11:35:08 sandervl Exp $ */
     1/* $Id: hmtoken.cpp,v 1.5 2001-04-26 13:22:47 sandervl Exp $ */
    22
    33/*
     
    9494 * Author    : SvL
    9595 *****************************************************************************/
    96 DWORD HMDeviceTokenClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
     96BOOL HMDeviceTokenClass::CloseHandle(PHMHANDLEDATA pHMHandleData)
    9797{
    98   return STATUS_SUCCESS;
     98  return TRUE;
    9999}
  • TabularUnified tags/trunk/src/kernel32/hmtoken.h

    r12912 r16148  
    1 /* $Id: hmtoken.h,v 1.2 2000-01-05 19:39:56 sandervl Exp $ */
     1/* $Id: hmtoken.h,v 1.3 2001-04-26 13:22:48 sandervl Exp $ */
    22
    33/*
     
    4242                                  HANDLE  ProcessHandle);
    4343
    44   virtual DWORD  CloseHandle(PHMHANDLEDATA pHMHandleData);
     44  virtual BOOL  CloseHandle(PHMHANDLEDATA pHMHandleData);
    4545};
    4646
  • TabularUnified tags/trunk/src/kernel32/kernel32.mak

    r16118 r16148  
    1 # $Id: kernel32.mak,v 1.3 2001-04-21 09:10:14 sandervl Exp $
     1# $Id: kernel32.mak,v 1.4 2001-04-26 13:22:48 sandervl Exp $
    22
    33#
     
    115115!endif
    116116$(OBJDIR)\module.obj \
     117$(OBJDIR)\hmmailslot.obj \
     118$(OBJDIR)\mailslot.obj \
    117119$(OBJDIR)\kernelrsrc.obj
    118120
  • TabularUnified tags/trunk/src/kernel32/module.cpp

    r15915 r16148  
    1212#include <heapstring.h>
    1313#include <misc.h>
     14
     15#define DBG_LOCALLOG    DBG_module
     16#include "dbglocal.h"
    1417
    1518#define FILE_strcasecmp  strcmpi
  • TabularUnified tags/trunk/src/kernel32/oslibdos.cpp

    r15954 r16148  
    1 /* $Id: oslibdos.cpp,v 1.60 2001-03-28 16:21:41 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.61 2001-04-26 13:22:48 sandervl Exp $ */
    22/*
    33 * Wrappers for OS/2 Dos* API
     
    14791479   LPSTR lpOS2Name;
    14801480   DWORD hPipe;
    1481    DWORD rc;
    1482 
     1481   DWORD rc, ulAction;
     1482   
    14831483  if (dwOpenMode & PIPE_ACCESS_DUPLEX_W)
    14841484    dwOS2Mode |= NP_ACCESS_DUPLEX;
     
    15281528
    15291529  dprintf(("DosCreateNPipe(%s,%x,%x,%x,%x,%x)",lpOS2Name,dwOS2Mode,dwOS2PipeMode,nInBufferSize,nOutBufferSize,nDefaultTimeOut));
     1530
     1531  //if the windows app tries to open another instance of an existing pipe, then
     1532  //we must use DosOpen here. So first try DosOpen, if that fails then we can
     1533  //create the named pipe
     1534  rc = DosOpen(lpOS2Name, &hPipe, &ulAction, 0, FILE_NORMAL, FILE_OPEN,
     1535               ((dwOpenMode & PIPE_ACCESS_INBOUND_W) ? OPEN_ACCESS_READWRITE : OPEN_ACCESS_READONLY) |
     1536               OPEN_SHARE_DENYNONE, NULL);
     1537
     1538  if(rc == NO_ERROR) {
     1539      dprintf(("Opening of existing named pipe succeeded"));
     1540      return hPipe;
     1541  }
     1542
    15301543  rc=DosCreateNPipe(lpOS2Name,
    15311544                    &hPipe,
     
    15431556  }
    15441557  return hPipe;
     1558}
     1559//******************************************************************************
     1560//******************************************************************************
     1561BOOL OSLibSetNamedPipeState(DWORD hNamedPipe, DWORD dwPipeMode)
     1562{
     1563 ULONG  dwOS2PipeMode = 0;
     1564 APIRET rc;
     1565
     1566  if (dwPipeMode & PIPE_WAIT_W)
     1567    dwOS2PipeMode |= NP_WAIT;
     1568  if (dwPipeMode & PIPE_NOWAIT_W)
     1569    dwOS2PipeMode |= NP_NOWAIT;
     1570  if (dwPipeMode & PIPE_READMODE_BYTE_W)
     1571    dwOS2PipeMode |= NP_READMODE_BYTE;
     1572  if (dwPipeMode & PIPE_READMODE_MESSAGE_W)
     1573    dwOS2PipeMode |= NP_READMODE_MESSAGE;
     1574
     1575  rc = DosSetNPHState(hNamedPipe, dwOS2PipeMode);
     1576  if(rc) {
     1577    SetLastError(error2WinError(rc, ERROR_INVALID_PARAMETER_W));
     1578    return FALSE;
     1579  }
     1580  return TRUE;
     1581}
     1582//******************************************************************************
     1583//******************************************************************************
     1584DWORD OSLibDosOpenPipe(LPCTSTR lpName,
     1585                       DWORD fuAccess,
     1586                       DWORD fuShare,
     1587                       LPSECURITY_ATTRIBUTES lpSecurityAttributes,
     1588                       DWORD fuCreate,
     1589                       DWORD fuAttrFlags)
     1590
     1591  LPSTR lpOS2Name;
     1592  ULONG hPipe;
     1593  ULONG rc, ulAction;
     1594  ULONG openFlag = 0;
     1595  ULONG openMode = 0;
     1596   
     1597
     1598   switch(fuCreate)
     1599   {
     1600   case CREATE_NEW_W:
     1601        openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_FAIL_IF_EXISTS;
     1602        break;
     1603   case CREATE_ALWAYS_W:
     1604       /* kso 2000-11-26: Not sure if OPEN_ACTION_REPLACE_IF_EXISTS is correct here! It is correct according to
     1605        *   MSDN, but not according to "The Win32 API SuperBible". Anyway I haven't got time to check it out in
     1606        *   NT now.
     1607        *   The problem is that OPEN_ACTION_REPLACE_IF_EXISTS requires write access. It failes with
     1608        *   rc = ERROR_ACCESS_DENIED (5). Quick fix, use OPEN_IF_EXIST if readonly access.
     1609        */
     1610       if (fuAccess & GENERIC_WRITE_W)
     1611           openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS;
     1612       else
     1613           openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
     1614        break;
     1615   case OPEN_EXISTING_W:
     1616        openFlag |= OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
     1617        break;
     1618   case OPEN_ALWAYS_W:
     1619        openFlag |= OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
     1620        break;
     1621   case TRUNCATE_EXISTING_W:
     1622        openFlag |= OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS;
     1623        break;
     1624   }
     1625
     1626   if(fuAttrFlags & FILE_FLAG_WRITE_THROUGH_W)   openMode |= OPEN_FLAGS_WRITE_THROUGH;
     1627   if(fuAttrFlags & FILE_FLAG_NO_BUFFERING_W)    openMode |= OPEN_FLAGS_NO_CACHE;
     1628   if(fuAttrFlags & FILE_FLAG_RANDOM_ACCESS_W)   openMode |= OPEN_FLAGS_RANDOM;
     1629   if(fuAttrFlags & FILE_FLAG_SEQUENTIAL_SCAN_W) openMode |= OPEN_FLAGS_SEQUENTIAL;
     1630   // TODO: FILE_FLAG_BACKUP_SEMANTICS_W
     1631   //       FILE_FLAG_POSIX_SEMANTICS_W are not supported
     1632
     1633   //TODO: FILE_SHARE_DELETE
     1634   if((fuShare & (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W)) == 0 )
     1635        openMode |= OPEN_SHARE_DENYREADWRITE;
     1636   else
     1637   if((fuShare & (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W)) == (FILE_SHARE_READ_W | FILE_SHARE_WRITE_W))
     1638        openMode |= OPEN_SHARE_DENYNONE;
     1639   else
     1640   if(fuShare & FILE_SHARE_READ_W)
     1641        openMode |= OPEN_SHARE_DENYWRITE;
     1642   else
     1643   if(fuShare & FILE_SHARE_WRITE_W)
     1644        openMode |= OPEN_SHARE_DENYREAD;
     1645
     1646   if(fuAccess == (GENERIC_READ_W | GENERIC_WRITE_W))
     1647        openMode |= OPEN_ACCESS_READWRITE;
     1648   else
     1649   if(fuAccess & GENERIC_READ_W)
     1650        openMode |= OPEN_ACCESS_READONLY;
     1651   else
     1652   if(fuAccess & GENERIC_WRITE_W)
     1653        openMode |= OPEN_ACCESS_WRITEONLY;
     1654
     1655  if (strstr(lpName,"\\\\."))
     1656  {
     1657       // If pipe is created on the local machine
     1658       // we must delete string \\. because
     1659       // in Windows named pipes scheme is a \\.\PIPE\pipename
     1660       // but in OS/2 only \PIPE\pipename
     1661       lpOS2Name = (LPSTR)lpName + 3;
     1662  }
     1663  else lpOS2Name = (LPSTR)lpName;
     1664
     1665  rc = DosOpen(lpOS2Name, &hPipe, &ulAction, 0, 0,
     1666               openFlag, openMode, NULL);
     1667
     1668  if(rc == NO_ERROR) {
     1669      dprintf(("Opening of existing named pipe succeeded"));
     1670      return hPipe;
     1671  }
     1672
     1673  SetLastError(error2WinError(rc,ERROR_INVALID_PARAMETER_W));
     1674  return -1; // INVALID_HANDLE_VALUE
    15451675}
    15461676
  • TabularUnified tags/trunk/src/kernel32/oslibdos.h

    r15330 r16148  
    1 /* $Id: oslibdos.h,v 1.27 2000-12-07 12:00:24 sandervl Exp $ */
     1/* $Id: oslibdos.h,v 1.28 2001-04-26 13:22:49 sandervl Exp $ */
    22
    33/*
     
    175175                              DWORD   nDefaultTimeOut,
    176176                              LPSECURITY_ATTRIBUTES lpSecurityAttributes);
     177
     178BOOL  OSLibSetNamedPipeState(DWORD hNamedPipe, DWORD dwPipeMode);
     179
     180DWORD OSLibDosOpenPipe(LPCTSTR lpName,
     181                       DWORD fuAccess,
     182                       DWORD fuShare,
     183                       LPSECURITY_ATTRIBUTES lpSecurityAttributes,
     184                       DWORD fuCreate,
     185                       DWORD fuAttrFlags);
    177186
    178187BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName,
  • TabularUnified tags/trunk/src/kernel32/stubs.cpp

    r16012 r16148  
    582582
    583583  return (NULL);
    584 }
    585 /*****************************************************************************
    586  * Name      : HANDLE WIN32API CreateMailslotA
    587  * Purpose   : The CreateMailslot function creates a mailslot with the specified
    588  *             name and returns a handle that a mailslot server can use to
    589  *             perform operations on the mailslot. The mailslot is local to the
    590  *             computer that creates it. An error occurs if a mailslot with
    591  *             the specified name already exists.
    592  * Parameters: LPCSTR lpName              pointer to string for mailslot name
    593  *             DWORD nMaxMessageSize      maximum message size
    594  *             DWORD lReadTimeout         milliseconds before read time-out
    595  *             LPSECURITY_ATTRIBUTES lpSecurityAttributes pointer to security structure
    596  * Variables :
    597  * Result    : If the function succeeds, the return value is a handle to
    598  *             the mailslot, for use in server mailslot operations.
    599  *             If the function fails, the return value is INVALID_HANDLE_VALUE.
    600  * Remark    :
    601  * Status    : UNTESTED STUB
    602  *
    603  * Author    : Markus Montkowski [Tha, 1998/05/21 17:46]
    604  *****************************************************************************/
    605 
    606 HANDLE WIN32API CreateMailslotA(LPCSTR lpName, DWORD nMaxMessageSize,
    607                                    DWORD lReadTimeout,
    608                                    LPSECURITY_ATTRIBUTES lpSecurityAttributes)
    609 {
    610 
    611   dprintf(("KERNEL32: CreateMailslotA(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",
    612            lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes
    613           ));
    614 
    615   return (INVALID_HANDLE_VALUE);
    616 }
    617 
    618 /*****************************************************************************
    619  * Name      : HANDLE WIN32API CreateMailslotW
    620  * Purpose   : The CreateMailslot function creates a mailslot with the specified
    621  *             name and returns a handle that a mailslot server can use to
    622  *             perform operations on the mailslot. The mailslot is local to the
    623  *             computer that creates it. An error occurs if a mailslot with
    624  *             the specified name already exists.
    625  * Parameters: LPCWSTR lpName             pointer to string for mailslot name
    626  *             DWORD nMaxMessageSize      maximum message size
    627  *             DWORD lReadTimeout         milliseconds before read time-out
    628  *             LPSECURITY_ATTRIBUTES lpSecurityAttributes  pointer to security
    629  *                                                         structure
    630  * Variables :
    631  * Result    : If the function succeeds, the return value is a handle to
    632  *             the mailslot, for use in server mailslot operations.
    633  *             If the function fails, the return value is INVALID_HANDLE_VALUE.
    634  * Remark    :
    635  * Status    : UNTESTED STUB
    636  *
    637  * Author    : Markus Montkowski [Tha, 1998/05/21 17:46]
    638  *****************************************************************************/
    639 
    640 HANDLE WIN32API CreateMailslotW(LPCWSTR lpName, DWORD nMaxMessageSize,
    641                                    DWORD lReadTimeout,
    642                                    LPSECURITY_ATTRIBUTES lpSecurityAttributes)
    643 {
    644 
    645   dprintf(("KERNEL32: CreateMailslotW(%08x,%08x,%08x,%08x) not implemented - INVALID_HANDLE_VALUE\n",
    646            lpName, nMaxMessageSize, lReadTimeout, lpSecurityAttributes
    647           ));
    648 
    649   return (INVALID_HANDLE_VALUE);
    650584}
    651585
     
    11491083
    11501084/*****************************************************************************
    1151  * Name      : VOID WIN32API FreeLibraryAndExitThread
    1152  * Purpose   : The FreeLibraryAndExitThread function decrements the reference
    1153  *             count of a loaded dynamic-link library (DLL) by one, and then
    1154  *             calls ExitThread to terminate the calling thread.
    1155  *             The function does not return.
    1156  *
    1157  *             The FreeLibraryAndExitThread function gives threads that are
    1158  *             created and executed within a dynamic-link library an opportunity
    1159  *             to safely unload the DLL and terminate themselves.
    1160  * Parameters:
    1161  * Variables :
    1162  * Result    :
    1163  * Remark    :
    1164  * Status    : UNTESTED STUB
    1165  *
    1166  * Author    : Markus Montkowski [Tha, 1998/05/21 20:57]
    1167  *****************************************************************************/
    1168 
    1169 VOID WIN32API FreeLibraryAndExitThread( HMODULE hLibModule, DWORD dwExitCode)
    1170 {
    1171 
    1172   dprintf(("KERNEL32:  FreeLibraryAndExitThread(%08x,%08x) not implemented\n",
    1173            hLibModule, dwExitCode
    1174           ));
    1175 
    1176 }
    1177 
    1178 
    1179 /*****************************************************************************
    11801085 * Name      : DWORD GetHandleInformation
    11811086 * Purpose   : The GetHandleInformation function obtains information about certain
     
    12011106}
    12021107
    1203 
    1204 /*****************************************************************************
    1205  * Name      : BOOL GetMailslotInfo
    1206  * Purpose   : The GetMailslotInfo function retrieves information about the
    1207  *             specified mailslot.
    1208  * Parameters: HANDLE  hMailslot        mailslot handle
    1209  *             LPDWORD lpMaxMessageSize address of maximum message size
    1210  *             LPDWORD lpNextSize       address of size of next message
    1211  *             LPDWORD lpMessageCount   address of number of messages
    1212  *             LPDWORD lpReadTimeout    address of read time-out
    1213  * Variables :
    1214  * Result    : TRUE / FALSE
    1215  * Remark    :
    1216  * Status    : UNTESTED STUB
    1217  *
    1218  * Author    : Patrick Haller [Mon, 1998/06/15 08:00]
    1219  *****************************************************************************/
    1220 
    1221 BOOL WIN32API GetMailslotInfo(HANDLE  hMailslot,
    1222                                  LPDWORD lpMaxMessageSize,
    1223                                  LPDWORD lpNextSize,
    1224                                  LPDWORD lpMessageCount,
    1225                                  LPDWORD lpReadTimeout)
    1226 {
    1227   dprintf(("KERNEL32: GetMailslotInfo(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented\n",
    1228            hMailslot,
    1229            lpMaxMessageSize,
    1230            lpNextSize,
    1231            lpMessageCount,
    1232            lpReadTimeout));
    1233 
    1234   return (FALSE);
    1235 }
    12361108
    12371109
     
    17981670}
    17991671
    1800 
    1801 /*****************************************************************************
    1802  * Name      : BOOL SetMailslotInfo
    1803  * Purpose   : The SetMailslotInfo function sets the time-out value used by the
    1804  *             specified mailslot for a read operation.
    1805  * Parameters: HANDLE hObject       handle to a mailslot object
    1806  *             DWORD  dwReadTimeout read time-out
    1807  * Variables :
    1808  * Result    : TRUE / FALSE
    1809  * Remark    :
    1810  * Status    : UNTESTED STUB
    1811  *
    1812  * Author    : Patrick Haller [Mon, 1998/06/15 08:00]
    1813  *****************************************************************************/
    1814 
    1815 BOOL WIN32API SetMailslotInfo(HANDLE hObject,
    1816                                  DWORD  dwReadTimeout)
    1817 {
    1818   dprintf(("KERNEL32: SetMailslotInfo(%08xh,%08xh) not implemented.\n",
    1819            hObject,
    1820            dwReadTimeout));
    1821 
    1822   return (FALSE);
    1823 }
    1824 
    1825 
    18261672/*****************************************************************************
    18271673 * Name      : BOOL SetSystemPowerState
  • TabularUnified tags/trunk/src/kernel32/wprocess.cpp

    r16077 r16148  
    1 /* $Id: wprocess.cpp,v 1.118 2001-04-16 08:31:46 sandervl Exp $ */
     1/* $Id: wprocess.cpp,v 1.119 2001-04-26 13:22:49 sandervl Exp $ */
    22
    33/*
     
    458458    dprintf(("WARNING: KERNEL32: FreeLibrary %s %x NOT FOUND!", OSLibGetDllName(hinstance), hinstance));
    459459    return(TRUE);
     460}
     461/*****************************************************************************
     462 * Name      : VOID WIN32API FreeLibraryAndExitThread
     463 * Purpose   : The FreeLibraryAndExitThread function decrements the reference
     464 *             count of a loaded dynamic-link library (DLL) by one, and then
     465 *             calls ExitThread to terminate the calling thread.
     466 *             The function does not return.
     467 *
     468 *             The FreeLibraryAndExitThread function gives threads that are
     469 *             created and executed within a dynamic-link library an opportunity
     470 *             to safely unload the DLL and terminate themselves.
     471 * Parameters:
     472 * Variables :
     473 * Result    :
     474 * Remark    :
     475 *****************************************************************************/
     476VOID WIN32API FreeLibraryAndExitThread( HMODULE hLibModule, DWORD dwExitCode)
     477{
     478
     479  dprintf(("KERNEL32:  FreeLibraryAndExitThread(%08x,%08x)", hLibModule, dwExitCode));
     480  FreeLibrary(hLibModule);
     481  ExitThread(dwExitCode);
    460482}
    461483/******************************************************************************/
Note: See TracChangeset for help on using the changeset viewer.