|  | /* | 
|  | * Thread definitions | 
|  | * | 
|  | * Copyright 1996 Alexandre Julliard | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
|  | */ | 
|  |  | 
|  | #ifndef __WINE_THREAD_H | 
|  | #define __WINE_THREAD_H | 
|  |  | 
|  | #include <stdarg.h> | 
|  | #include <windef.h> | 
|  | #include <winbase.h> | 
|  | #include <winreg.h> | 
|  | #define WINE_NO_TEB | 
|  | #include <winternl.h> | 
|  |  | 
|  | #ifndef WINE_TEB_DEFINED | 
|  | #define WINE_TEB_DEFINED | 
|  | typedef struct _TEB | 
|  | { | 
|  | NT_TIB       Tib;            /* 12-  00 Thread information block */ | 
|  | PVOID        EnvironmentPointer; /* 12-  1c EnvironmentPointer (win95: tib flags + win16 mutex count) */ | 
|  | CLIENT_ID    ClientId;       /* -2-  20 Process and thread id (win95: debug context) */ | 
|  | PVOID        ActiveRpcHandle;              /* 028 */ | 
|  | PVOID        ThreadLocalStoragePointer;    /* 02c Pointer to TLS array */ | 
|  | PEB         *Peb;                          /* 030 owning process PEB */ | 
|  | DWORD        LastErrorValue;               /* 034 Last error code */ | 
|  | ULONG        CountOfOwnedCriticalSections; /* 038 */ | 
|  | PVOID        CsrClientThread;              /* 03c */ | 
|  | PVOID        Win32ThreadInfo;              /* 040 */ | 
|  | ULONG        Win32ClientInfo[0x1f];        /* 044 */ | 
|  | PVOID        WOW32Reserved;                /* 0c0 */ | 
|  | ULONG        CurrentLocale;                /* 0c4 */ | 
|  | ULONG        FpSoftwareStatusRegister;     /* 0c8 */ | 
|  | PVOID        SystemReserved1[54];          /* 0cc */ | 
|  | PVOID        Spare1;                       /* 1a4 */ | 
|  | LONG         ExceptionCode;                /* 1a8 */ | 
|  | BYTE         SpareBytes1[40];              /* 1ac */ | 
|  | PVOID        SystemReserved2[10];          /* 1d4 */ | 
|  |  | 
|  | /* The following are Wine-specific fields (NT: GdiTebBatch) */ | 
|  | DWORD        gs_sel;              /* 1fc %gs selector for this thread */ | 
|  | ULONG_PTR    num_async_io;        /* 200 number of pending async I/O in the server */ | 
|  | DWORD        dpmi_vif;            /* 204 protected mode virtual interrupt flag */ | 
|  | DWORD        vm86_pending;        /* 208 data for vm86 mode */ | 
|  | /* here is plenty space for wine specific fields (don't forget to change pad6!!) */ | 
|  | DWORD        pad6[308];           /* 20c */ | 
|  |  | 
|  | ULONG        gdiRgn;                     /* 6dc */ | 
|  | ULONG        gdiPen;                     /* 6e0 */ | 
|  | ULONG        gdiBrush;                   /* 6e4 */ | 
|  | CLIENT_ID    RealClientId;               /* 6e8 */ | 
|  | HANDLE       GdiCachedProcessHandle;     /* 6f0 */ | 
|  | ULONG        GdiClientPID;               /* 6f4 */ | 
|  | ULONG        GdiClientTID;               /* 6f8 */ | 
|  | PVOID        GdiThreadLocaleInfo;        /* 6fc */ | 
|  | PVOID        UserReserved[5];            /* 700 */ | 
|  | PVOID        glDispachTable[280];        /* 714 */ | 
|  | ULONG        glReserved1[26];            /* b74 */ | 
|  | PVOID        glReserved2;                /* bdc */ | 
|  | PVOID        glSectionInfo;              /* be0 */ | 
|  | PVOID        glSection;                  /* be4 */ | 
|  | PVOID        glTable;                    /* be8 */ | 
|  | PVOID        glCurrentRC;                /* bec */ | 
|  | PVOID        glContext;                  /* bf0 */ | 
|  | ULONG        LastStatusValue;            /* bf4 */ | 
|  | UNICODE_STRING StaticUnicodeString;      /* bf8 */ | 
|  | WCHAR        StaticUnicodeBuffer[261];   /* c00 */ | 
|  | PVOID        DeallocationStack;          /* e0c */ | 
|  | PVOID        TlsSlots[64];               /* e10 */ | 
|  | LIST_ENTRY   TlsLinks;                   /* f10 */ | 
|  | PVOID        Vdm;                        /* f18 */ | 
|  | PVOID        ReservedForNtRpc;           /* f1c */ | 
|  | PVOID        DbgSsReserved[2];           /* f20 */ | 
|  | ULONG        HardErrorDisabled;          /* f28 */ | 
|  | PVOID        Instrumentation[16];        /* f2c */ | 
|  | PVOID        WinSockData;                /* f6c */ | 
|  | ULONG        GdiBatchCount;              /* f70 */ | 
|  | ULONG        Spare2;                     /* f74 */ | 
|  | ULONG        Spare3;                     /* f78 */ | 
|  | ULONG        Spare4;                     /* f7c */ | 
|  | PVOID        ReservedForOle;             /* f80 */ | 
|  | ULONG        WaitingOnLoaderLock;        /* f84 */ | 
|  | PVOID        Reserved5[3];               /* f88 */ | 
|  | PVOID       *TlsExpansionSlots;          /* f94 */ | 
|  | } TEB; | 
|  | #endif /* WINE_TEB_DEFINED */ | 
|  |  | 
|  |  | 
|  | /* The thread information for 16-bit threads */ | 
|  | /* NtCurrentTeb()->SubSystemTib points to this */ | 
|  | typedef struct | 
|  | { | 
|  | void           *unknown;    /* 00 unknown */ | 
|  | UNICODE_STRING *exe_name;   /* 04 exe module name */ | 
|  |  | 
|  | /* the following fields do not exist under Windows */ | 
|  | UNICODE_STRING  exe_str;    /* exe name string pointed to by exe_name */ | 
|  | CURDIR          curdir;     /* current directory */ | 
|  | WCHAR           curdir_buffer[MAX_PATH]; | 
|  | } WIN16_SUBSYSTEM_TIB; | 
|  |  | 
|  | #endif  /* __WINE_THREAD_H */ |