summaryrefslogtreecommitdiff
path: root/src/ToolBox/SOS/Strike/ntinfo.h
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2016-11-23 19:09:09 +0900
committerJiyoung Yun <jy910.yun@samsung.com>2016-11-23 19:09:09 +0900
commit4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch)
tree98110734c91668dfdbb126fcc0e15ddbd93738ca /src/ToolBox/SOS/Strike/ntinfo.h
parentfa45f57ed55137c75ac870356a1b8f76c84b229c (diff)
downloadcoreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz
coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2
coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'src/ToolBox/SOS/Strike/ntinfo.h')
-rw-r--r--src/ToolBox/SOS/Strike/ntinfo.h193
1 files changed, 193 insertions, 0 deletions
diff --git a/src/ToolBox/SOS/Strike/ntinfo.h b/src/ToolBox/SOS/Strike/ntinfo.h
new file mode 100644
index 0000000000..f3e6e91ff0
--- /dev/null
+++ b/src/ToolBox/SOS/Strike/ntinfo.h
@@ -0,0 +1,193 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// ==++==
+//
+
+//
+// ==--==
+#ifndef _ntinfo_h__
+#define _ntinfo_h__
+
+//+---------------------------------------------------------------------------
+//
+// forward declarations (in order to avoid type casting when accessing
+// data members of the SOleTlsData structure).
+//
+//+---------------------------------------------------------------------------
+
+class CAptCallCtrl; // see callctrl.hxx
+class CSrvCallState; // see callctrl.hxx
+class CObjServer; // see sobjact.hxx
+class CSmAllocator; // see stg\h\smalloc.hxx
+class CMessageCall; // see call.hxx
+class CClientCall; // see call.hxx
+class CAsyncCall; // see call.hxx
+class CClipDataObject; // see ole232\clipbrd\clipdata.h
+class CSurrogatedObjectList; // see com\inc\comsrgt.hxx
+class CCtxCall; // see PSTable.hxx
+class CPolicySet; // see PSTable.hxx
+class CObjectContext; // see context.hxx
+class CComApartment; // see aprtmnt.hxx
+class ContextStackNode;
+//+-------------------------------------------------------------------
+//
+// Struct: CallEntry
+//
+// Synopsis: Call Table Entry.
+//
+//+-------------------------------------------------------------------
+typedef struct tagCallEntry
+{
+ void *pNext; // ptr to next entry
+ void *pvObject; // Entry object
+} CallEntry;
+
+//+---------------------------------------------------------------------------
+//
+// Enum: OLETLSFLAGS
+//
+// Synopsys: bit values for dwFlags field of SOleTlsData. If you just want
+// to store a BOOL in TLS, use this enum and the dwFlag field.
+//
+//+---------------------------------------------------------------------------
+typedef enum tagOLETLSFLAGS
+{
+ OLETLS_LOCALTID = 0x01, // This TID is in the current process.
+ OLETLS_UUIDINITIALIZED = 0x02, // This Logical thread is init'd.
+ OLETLS_INTHREADDETACH = 0x04, // This is in thread detach. Needed
+ // due to NT's special thread detach
+ // rules.
+ OLETLS_CHANNELTHREADINITIALZED = 0x08,// This channel has been init'd
+ OLETLS_WOWTHREAD = 0x10, // This thread is a 16-bit WOW thread.
+ OLETLS_THREADUNINITIALIZING = 0x20, // This thread is in CoUninitialize.
+ OLETLS_DISABLE_OLE1DDE = 0x40, // This thread can't use a DDE window.
+ OLETLS_APARTMENTTHREADED = 0x80, // This is an STA apartment thread
+ OLETLS_MULTITHREADED = 0x100, // This is an MTA apartment thread
+ OLETLS_IMPERSONATING = 0x200, // This thread is impersonating
+ OLETLS_DISABLE_EVENTLOGGER = 0x400, // Prevent recursion in event logger
+ OLETLS_INNEUTRALAPT = 0x800, // This thread is in the NTA
+ OLETLS_DISPATCHTHREAD = 0x1000, // This is a dispatch thread
+ OLETLS_HOSTTHREAD = 0x2000, // This is a host thread
+ OLETLS_ALLOWCOINIT = 0x4000, // This thread allows inits
+ OLETLS_PENDINGUNINIT = 0x8000, // This thread has pending uninit
+ OLETLS_FIRSTMTAINIT = 0x10000,// First thread to attempt an MTA init
+ OLETLS_FIRSTNTAINIT = 0x20000,// First thread to attempt an NTA init
+ OLETLS_APTINITIALIZING = 0x40000 // Apartment Object is initializing
+} OLETLSFLAGS;
+
+
+//+---------------------------------------------------------------------------
+//
+// Structure: SOleTlsData
+//
+// Synopsis: structure holding per thread state needed by OLE32
+//
+//+---------------------------------------------------------------------------
+typedef struct tagSOleTlsData
+{
+ // jsimmons 5/23/2001
+ // Alert Alert: nefarious folks (eg, URT) are looking in our TLS at
+ // various stuff. They expect that pCurrentCtx will be at a certain
+ // offset from the beginning of the tls struct. So don't add, delete, or
+ // move any members within this block.
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// ********* BEGIN "NO MUCKING AROUND" BLOCK *********
+/////////////////////////////////////////////////////////////////////////////////////////
+ // Docfile multiple allocator support
+ void *pvThreadBase; // per thread base pointer
+ CSmAllocator *pSmAllocator; // per thread docfile allocator
+
+ DWORD dwApartmentID; // Per thread "process ID"
+ DWORD dwFlags; // see OLETLSFLAGS above
+
+ LONG TlsMapIndex; // index in the global TLSMap
+ void **ppTlsSlot; // Back pointer to the thread tls slot
+ DWORD cComInits; // number of per-thread inits
+ DWORD cOleInits; // number of per-thread OLE inits
+
+ DWORD cCalls; // number of outstanding calls
+ CMessageCall *pCallInfo; // channel call info
+ CAsyncCall *pFreeAsyncCall; // ptr to available call object for this thread.
+ CClientCall *pFreeClientCall; // ptr to available call object for this thread.
+
+ CObjServer *pObjServer; // Activation Server Object for this apartment.
+ DWORD dwTIDCaller; // TID of current calling app
+ CObjectContext *pCurrentCtx; // Current context
+/////////////////////////////////////////////////////////////////////////////////////////
+// ********* END "NO MUCKING AROUND" BLOCK *********
+/////////////////////////////////////////////////////////////////////////////////////////
+
+ CObjectContext *pEmptyCtx; // Empty context
+
+ CObjectContext *pNativeCtx; // Native context
+ ULONGLONG ContextId; // Uniquely identifies the current context
+ CComApartment *pNativeApt; // Native apartment for the thread.
+ IUnknown *pCallContext; // call context object
+ CCtxCall *pCtxCall; // Context call object
+
+ CPolicySet *pPS; // Policy set
+ PVOID pvPendingCallsFront;// Per Apt pending async calls
+ PVOID pvPendingCallsBack;
+ CAptCallCtrl *pCallCtrl; // call control for RPC for this apartment
+
+ CSrvCallState *pTopSCS; // top server-side callctrl state
+ IMessageFilter *pMsgFilter; // temp storage for App MsgFilter
+ HWND hwndSTA; // STA server window same as poxid->hServerSTA
+ // ...needed on Win95 before oxid registration
+ LONG cORPCNestingLevel; // call nesting level (DBG only)
+
+ DWORD cDebugData; // count of bytes of debug data in call
+
+ UUID LogicalThreadId; // current logical thread id
+
+ HANDLE hThread; // Thread handle used for cancel
+ HANDLE hRevert; // Token before first impersonate.
+ IUnknown *pAsyncRelease; // Controlling unknown for async release
+ // DDE data
+ HWND hwndDdeServer; // Per thread Common DDE server
+
+ HWND hwndDdeClient; // Per thread Common DDE client
+ ULONG cServeDdeObjects; // non-zero if objects DDE should serve
+ // ClassCache data
+ LPVOID pSTALSvrsFront; // Chain of LServers registers in this thread if STA
+ // upper layer data
+ HWND hwndClip; // Clipboard window
+
+ IDataObject *pDataObjClip; // Current Clipboard DataObject
+ DWORD dwClipSeqNum; // Clipboard Sequence # for the above DataObject
+ DWORD fIsClipWrapper; // Did we hand out the wrapper Clipboard DataObject?
+ IUnknown *punkState; // Per thread "state" object
+ // cancel data
+ DWORD cCallCancellation; // count of CoEnableCallCancellation
+ // async sends data
+ DWORD cAsyncSends; // count of async sends outstanding
+
+ CAsyncCall* pAsyncCallList; // async calls outstanding
+ CSurrogatedObjectList *pSurrogateList; // Objects in the surrogate
+
+ LockEntry lockEntry; // Locks currently held by the thread
+ CallEntry CallEntry; // client-side call chain for this thread
+
+#ifdef WX86OLE
+ IUnknown *punkStateWx86; // Per thread "state" object for Wx86
+#endif
+ void *pDragCursors; // Per thread drag cursor table.
+
+ IUnknown *punkError; // Per thread error object.
+ ULONG cbErrorData; // Maximum size of error data.
+
+ IUnknown *punkActiveXSafetyProvider;
+
+#if DBG==1
+ LONG cTraceNestingLevel; // call nesting level for OLETRACE
+#endif
+
+ ContextStackNode* pContextStack;
+
+} SOleTlsData;
+
+#endif //_ntinfo_h__
+