Ignore:
Timestamp:
Dec 7, 2001, 3:13:39 PM (24 years ago)
Author:
sandervl
Message:

overlapped io, com, thread & process updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/overlappedio.h

    r7564 r7567  
    1 /* $Id: overlappedio.h,v 1.5 2001-12-07 11:28:11 sandervl Exp $ */
     1/* $Id: overlappedio.h,v 1.6 2001-12-07 14:13:38 sandervl Exp $ */
    22
    33/*
     
    1313#define __OVERLAPPEDIO_H__
    1414
    15 #define NR_ASYNC_OPERATIONS 3
     15#define NR_ASYNC_OPERATIONS     4
    1616#define ASYNC_INDEX_READ        0
    1717#define ASYNC_INDEX_WRITE       1
    1818#define ASYNC_INDEX_POLL        2
     19#define ASYNC_INDEX_BUSY        3
    1920
    2021#define ASYNCIO_READ        1
     
    3132} OVERLAPPED_THREAD_PARAM, *LPOVERLAPPED_THREAD_PARAM;
    3233
    33 typedef struct tagOVERLAPPED_ODIN{
    34   DWORD               dwAsyncType;
    35   HANDLE              hHandle;
    36   LPCVOID             lpBuffer;
    37   DWORD               nNumberOfBytes;
    38   DWORD               dwTimeOut;
    39   LPOVERLAPPED        lpOverlapped;
    40   LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine;
    41   DWORD              *lpdwResult;
    42   DWORD               dwLastError;
    43   DWORD               dwUserData;
    44   tagOVERLAPPED_ODIN *next;
    45 } ASYNCIOREQUEST, *LPASYNCIOREQUEST;
    4634
    47 typedef BOOL (* LPOVERLAPPED_HANDLER)(LPASYNCIOREQUEST lpRequest, DWORD *lpdwResult, DWORD *lpdwTimeOut);
     35class ASYNCIOREQUEST
     36{
     37public:
     38    ASYNCIOREQUEST()
     39    {
     40        memset(this, 0, sizeof(ASYNCIOREQUEST));
     41        hEventCancel = ::CreateEventA(NULL, TRUE, FALSE, NULL);
     42        if(hEventCancel == 0) DebugInt3();
     43    };
     44
     45    ~ASYNCIOREQUEST()
     46    {
     47        ::CloseHandle(hEventCancel);
     48    };
     49
     50    DWORD               dwAsyncType;
     51    HANDLE              hHandle;
     52    LPCVOID             lpBuffer;
     53    DWORD               nNumberOfBytes;
     54    DWORD               dwTimeOut;
     55    LPOVERLAPPED        lpOverlapped;
     56    LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine;
     57    DWORD              *lpdwResult;
     58    DWORD               dwLastError;
     59    DWORD               dwEventMask;
     60    DWORD               dwUserData;
     61    HANDLE              hEventCancel;
     62    ASYNCIOREQUEST     *next;
     63};
     64
     65typedef ASYNCIOREQUEST *LPASYNCIOREQUEST;
     66
     67typedef DWORD (* LPOVERLAPPED_HANDLER)(LPASYNCIOREQUEST lpRequest, DWORD *lpdwResult, DWORD *lpdwTimeOut);
    4868
    4969enum OverlappedIOError {
     
    7898
    7999     BOOL   WaitForEvent(HANDLE        hHandle,
     100                         DWORD         dwEventMask,
    80101                         LPDWORD       lpfdwEvtMask,
    81102                         LPOVERLAPPED  lpOverlapped,
     
    116137     //[ASYNC_INDEX_WRITE] list of pending write (full-duplex mode) operations
    117138     //[ASYNC_INDEX_POLL]  list of pending poll operations
     139     //[ASYNC_INDEX_BUSY]  list of operations that are being handled
    118140     LPASYNCIOREQUEST     pending[NR_ASYNC_OPERATIONS];
    119141
Note: See TracChangeset for help on using the changeset viewer.