Ignore:
Timestamp:
Feb 15, 2002, 8:14:52 PM (24 years ago)
Author:
sandervl
Message:

pipe updates

File:
1 edited

Legend:

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

    r7549 r7927  
    1 /* $Id: hmnpipe.cpp,v 1.7 2001-12-05 14:16:02 sandervl Exp $ */
     1/* $Id: hmnpipe.cpp,v 1.8 2002-02-15 19:14:51 sandervl Exp $ */
    22/*
    33 * Project Odin Software License can be found in LICENSE.TXT
     
    187187//******************************************************************************
    188188BOOL HMDeviceNamedPipeClass::CreatePipe(PHMHANDLEDATA pHMHandleDataRead,
    189                                          PHMHANDLEDATA pHMHandleDataWrite,
    190                                          LPSECURITY_ATTRIBUTES lpsa,
    191                                          DWORD         cbPipe)
     189                                        PHMHANDLEDATA pHMHandleDataWrite,
     190                                        LPSECURITY_ATTRIBUTES lpsa,
     191                                        DWORD         cbPipe)
    192192{
    193193  pHMHandleDataRead->dwInternalType  = HMTYPE_PIPE;
     
    204204    return(FALSE);
    205205}
    206 
    207 
    208206//******************************************************************************
    209207//******************************************************************************
     
    267265  return (FALSE);
    268266}
    269 
    270267//******************************************************************************
    271268//******************************************************************************
     
    290287                                    lpo));
    291288}
    292 
     289//******************************************************************************
     290//******************************************************************************
    293291BOOL HMDeviceNamedPipeClass::SetNamedPipeHandleState(PHMHANDLEDATA pHMHandleData,
    294292                                                LPDWORD lpdwMode,
     
    309307  return ret;
    310308}
    311 
    312 
     309//******************************************************************************
     310//******************************************************************************
    313311BOOL HMDeviceNamedPipeClass::GetOverlappedResult(PHMHANDLEDATA pHMHandleData,
    314312                                                 LPOVERLAPPED  arg2,
     
    318316   return (FALSE);
    319317}
     318/*****************************************************************************
     319 * Name      : BOOL HMDeviceNamedPipeClass::ReadFile
     320 * Purpose   : read data from handle / device
     321 * Parameters: PHMHANDLEDATA pHMHandleData,
     322 *             LPCVOID       lpBuffer,
     323 *             DWORD         nNumberOfBytesToRead,
     324 *             LPDWORD       lpNumberOfBytesRead,
     325 *             LPOVERLAPPED  lpOverlapped
     326 * Variables :
     327 * Result    : Boolean
     328 * Remark    :
     329 * Status    :
     330 *
     331 * Author    : SvL
     332 *****************************************************************************/
     333
     334BOOL HMDeviceNamedPipeClass::ReadFile(PHMHANDLEDATA pHMHandleData,
     335                                      LPCVOID       lpBuffer,
     336                                      DWORD         nNumberOfBytesToRead,
     337                                      LPDWORD       lpNumberOfBytesRead,
     338                                      LPOVERLAPPED  lpOverlapped,
     339                                      LPOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine)
     340{
     341  DWORD        bytesread;
     342  BOOL         bRC;
     343
     344  dprintfl(("KERNEL32: HMDeviceNamedPipeClass::ReadFile %s(%08x,%08x,%08x,%08x,%08x) - stub?\n",
     345           lpHMDeviceName,
     346           pHMHandleData,
     347           lpBuffer,
     348           nNumberOfBytesToRead,
     349           lpNumberOfBytesRead,
     350           lpOverlapped));
     351
     352  //This pointer can to be NULL
     353  if(lpNumberOfBytesRead)
     354    *lpNumberOfBytesRead = 0;
     355  else
     356    lpNumberOfBytesRead = &bytesread;
     357
     358  if((pHMHandleData->dwFlags & FILE_FLAG_OVERLAPPED) && !lpOverlapped) {
     359    dprintf(("FILE_FLAG_OVERLAPPED flag set, but lpOverlapped NULL!!"));
     360    SetLastError(ERROR_INVALID_PARAMETER);
     361    return FALSE;
     362  }
     363  if(!(pHMHandleData->dwFlags & FILE_FLAG_OVERLAPPED) && lpOverlapped) {
     364    dprintf(("Warning: lpOverlapped != NULL & !FILE_FLAG_OVERLAPPED; sync operation"));
     365  }
     366  if(lpCompletionRoutine) {
     367      dprintf(("!WARNING!: lpCompletionRoutine not supported -> fall back to sync IO"));
     368  }
     369
     370  if(pHMHandleData->dwFlags & FILE_FLAG_OVERLAPPED) {
     371    dprintf(("ERROR: Overlapped IO not yet implememented!!"));
     372  }
     373
     374  bRC = HMDeviceFileClass::WriteFile(pHMHandleData,
     375                                     lpBuffer,
     376                                     nNumberOfBytesToRead,
     377                                     lpNumberOfBytesRead,
     378                                     lpOverlapped, lpCompletionRoutine);
     379
     380  dprintf(("KERNEL32: HMDeviceNamedPipeClass::ReadFile returned %08xh; bytes written %d",
     381           bRC, *lpNumberOfBytesRead));
     382
     383  return bRC;
     384}
     385
     386
     387/*****************************************************************************
     388 * Name      : BOOL HMDeviceNamedPipeClass::WriteFile
     389 * Purpose   : write data to handle / device
     390 * Parameters: PHMHANDLEDATA pHMHandleData,
     391 *             LPCVOID       lpBuffer,
     392 *             DWORD         nNumberOfBytesToWrite,
     393 *             LPDWORD       lpNumberOfBytesWritten,
     394 *             LPOVERLAPPED  lpOverlapped
     395 * Variables :
     396 * Result    : Boolean
     397 * Remark    :
     398 * Status    :
     399 *
     400 * Author    : SvL
     401 *****************************************************************************/
     402
     403BOOL HMDeviceNamedPipeClass::WriteFile(PHMHANDLEDATA pHMHandleData,
     404                                       LPCVOID       lpBuffer,
     405                                       DWORD         nNumberOfBytesToWrite,
     406                                       LPDWORD       lpNumberOfBytesWritten,
     407                                       LPOVERLAPPED  lpOverlapped,
     408                                       LPOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine)
     409{
     410  DWORD        byteswritten;
     411  BOOL         bRC;
     412
     413  dprintfl(("KERNEL32: HMDeviceNamedPipeClass::WriteFile %s(%08x,%08x,%08x,%08x,%08x) - stub?\n",
     414           lpHMDeviceName,
     415           pHMHandleData,
     416           lpBuffer,
     417           nNumberOfBytesToWrite,
     418           lpNumberOfBytesWritten,
     419           lpOverlapped));
     420
     421  //This pointer can to be NULL
     422  if(lpNumberOfBytesWritten)
     423    *lpNumberOfBytesWritten = 0;
     424  else
     425    lpNumberOfBytesWritten = &byteswritten;
     426
     427  if((pHMHandleData->dwFlags & FILE_FLAG_OVERLAPPED) && !lpOverlapped) {
     428    dprintf(("FILE_FLAG_OVERLAPPED flag set, but lpOverlapped NULL!!"));
     429    SetLastError(ERROR_INVALID_PARAMETER);
     430    return FALSE;
     431  }
     432  if(!(pHMHandleData->dwFlags & FILE_FLAG_OVERLAPPED) && lpOverlapped) {
     433    dprintf(("Warning: lpOverlapped != NULL & !FILE_FLAG_OVERLAPPED; sync operation"));
     434  }
     435
     436  if(pHMHandleData->dwFlags & FILE_FLAG_OVERLAPPED) {
     437    dprintf(("ERROR: Overlapped IO not yet implememented!!"));
     438  }
     439  bRC = HMDeviceFileClass::WriteFile(pHMHandleData,
     440                                     lpBuffer,
     441                                     nNumberOfBytesToWrite,
     442                                     lpNumberOfBytesWritten,
     443                                     lpOverlapped, lpCompletionRoutine);
     444
     445  dprintf(("KERNEL32: HMDeviceNamedPipeClass::WriteFile returned %08xh; bytes written %d",
     446           bRC, *lpNumberOfBytesWritten));
     447
     448  return bRC;
     449}
     450//******************************************************************************
     451//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.