#include "precomp.h"
Go to the source code of this file.
Defines | |
#define | HTIENTRY(szObjectType, structName, fnDestroy, dwAllocTag, bObjectCreateFlags) {(FnDestroyUserObject)fnDestroy, (CONST DWORD)dwAllocTag, (CONST BYTE)(bObjectCreateFlags)} |
#define | CPAGEENTRIESINIT 4 |
#define | DBGValidateHandleQuota() |
#define | DBGHMValidateFreeLists() |
#define | CHANDLEENTRIESINIT 200 |
#define | CLOCKENTRIESINIT 100 |
Functions | |
void | HMNullFnDestroy (PVOID pobj) |
void | HMDestroyUnlockedObject (PHE phe) |
void | HMRecordLock (PVOID ppobj, PVOID pobj, DWORD cLockObj) |
BOOL | HMUnrecordLock (PVOID ppobj, PVOID pobj) |
VOID | ShowLocks (PHE) |
void | HMInitHandleEntries (ULONG_PTR iheFirstFree) |
BOOL | HMInitHandleTable (PVOID pReadOnlySharedSectionBase) |
BOOL | HMGrowHandleTable () |
PVOID | HMAllocObject (PTHREADINFO ptiOwner, PDESKTOP pdeskSrc, BYTE bType, DWORD size) |
BOOL | HMFreeObject (PVOID pobj) |
BOOL | HMMarkObjectDestroy (PVOID pobj) |
BOOL | HMDestroyObject (PVOID pobj) |
PVOID | HMUnlockObjectInternal (PVOID pobj) |
PVOID FASTCALL | HMAssignmentLock (PVOID *ppobj, PVOID pobj) |
PVOID FASTCALL | HMAssignmentUnlock (PVOID *ppobj) |
PVOID | ThreadUnlock1 (VOID) |
VOID | HMChangeOwnerThread (PVOID pobj, PTHREADINFO pti) |
VOID | HMChangeOwnerPheProcess (PHE phe, PTHREADINFO pti) |
VOID | DestroyThreadsObjects () |
void | FixupCursor (PCURSOR pcur, PPROCESSINFO ppi) |
VOID | DestroyProcessesObjects (PPROCESSINFO ppi) |
void | MarkThreadsObjects (PTHREADINFO pti) |
VOID | _QueryUserHandles (LPDWORD paPids, DWORD dwNumInstances, DWORD dwResult[][TYPE_CTYPES]) |
void | HMCleanupGrantedHandle (HANDLE h) |
Variables | |
CONST HANDLETYPEINFO | gahti [TYPE_CTYPES] |
DWORD | gcHandlePages |
PHANDLEPAGE | gpHandlePages |
|
Definition at line 572 of file handtabl.c. |
|
Definition at line 573 of file handtabl.c. |
|
Definition at line 206 of file handtabl.c. Referenced by HMGrowHandleTable(), and HMInitHandleTable(). |
|
Definition at line 455 of file handtabl.c. Referenced by HMAllocObject(), HMFreeObject(), and HMInitHandleEntries(). |
|
Definition at line 269 of file handtabl.c. Referenced by DestroyProcessesObjects(), DestroyThreadsObjects(), HMAllocObject(), HMChangeOwnerPheProcess(), HMChangeOwnerThread(), and HMFreeObject(). |
|
Definition at line 23 of file handtabl.c. |
|
Definition at line 2776 of file handtabl.c. References tagSHAREDINFO::aheList, tagHANDLETYPEINFO::bObjectCreateFlags, _HANDLEENTRY::bType, DWORD, gahti, giheLast, gSharedInfo, OCF_PROCESSOWNED, OCF_THREADOWNED, _HANDLEENTRY::pOwner, QUC_PID_TOTAL, TYPE_CTYPES, and VOID().
|
|
Definition at line 2511 of file handtabl.c. References tagSHAREDINFO::aheList, _HANDLEENTRY::bFlags, tagHANDLETYPEINFO::bObjectCreateFlags, BOOL, _HANDLEENTRY::bType, DBGValidateHandleQuota, FixupCursor(), gahti, giheLast, gpepCSRSS, gptiRit, gSharedInfo, HANDLEF_DESTROY, HMChangeOwnerPheProcess(), HMDestroyUnlockedObject(), ISTS, OCF_PROCESSOWNED, _HANDLEENTRY::phead, _HANDLEENTRY::pOwner, TYPE_CURSOR, TYPE_FREE, VOID(), and ZombieCursor(). Referenced by xxxDestroyThreadInfo().
|
|
Definition at line 2284 of file handtabl.c. References tagSHAREDINFO::aheList, BEGINATOMICCHECK, _HANDLEENTRY::bFlags, tagHANDLETYPEINFO::bObjectCreateFlags, _HANDLEENTRY::bType, DBGValidateHandleQuota, DestroyCacheDCEntries(), DWORD, ENDATOMICCHECK, gahti, GETPTI, giheLast, gSharedInfo, HANDLEF_DESTROY, HMDestroyUnlockedObject(), KeGetCurrentThread, NULL, OCF_PROCESSOWNED, OCF_THREADOWNED, _HANDLEENTRY::phead, _HANDLEENTRY::pOwner, PtiCurrent, tagTHREADINFO::ptl, ThreadUnlock, TYPE_FREE, TYPE_MENU, Unlock, and VOID(). Referenced by xxxDestroyThreadInfo().
|
|
Definition at line 2475 of file handtabl.c. References CURSORF_ACON, CURSORF_ACONFRAME, NULL, and pacon. Referenced by DestroyProcessesObjects().
|
|
Definition at line 828 of file handtabl.c. References tagSHAREDINFO::aheList, _HANDLEENTRY::bFlags, tagHANDLETYPEINFO::bObjectCreateFlags, BOOL, _HANDLEENTRY::bType, BYTE, tagSERVERINFO::cHandleEntries, CheckCritIn, DBGHMValidateFreeLists, DBGValidateHandleQuota, DesktopAlloc(), DTAG_HANDTABL, DWORD, ExQueryPoolBlockSize(), gahti, gcHandlePages, giheLast, gpHandlePages, gpsi, gpvSharedAlloc, gSharedInfo, gUserProcessHandleQuota, _HEAD::h, HMGrowHandleTable(), HMHandleFromIndex, HMINDEXBITS, HMIndexFromHandle, tagTDB::hTaskWow, _HANDLEPAGE::iheFreeEven, _HANDLEPAGE::iheFreeOdd, tagPERFINFO::lCount, tagPERFINFO::lMaxCount, LockDesktop, tagPERFINFO::lSize, tagPERFINFO::lTotalCount, NULL, OCF_DESKTOPHEAP, OCF_MARKPROCESS, OCF_PROCESSOWNED, OCF_SHAREDHEAP, OCF_THREADOWNED, OCF_USEPOOLIFNODESKTOP, OCF_USEPOOLQUOTA, OCF_VARIABLESIZE, PBYTE, _HANDLEENTRY::phead, tagDESKTOP::pheapDesktop, _HANDLEENTRY::pOwner, tagTHREADINFO::ppi, PPROCMARKHEAD, tagTHREADINFO::ptdb, RtlSizeHeap(), SharedAlloc(), TIF_16BIT, tagTHREADINFO::TIF_flags, and TYPE_WINDOW. Referenced by _BeginDeferWindowPos(), _ConvertMemHandle(), _CreateAcceleratorTable(), _CreateEmptyCursorObject(), _SetWinEventHook(), CreateInputContext(), CreateMonitor(), Createpxs(), GetCPD(), InternalCreateMenu(), InternalSetTimer(), LoadKeyboardLayoutFile(), NewConversation(), xxxCreateWindowEx(), xxxCsDdeInitialize(), xxxLoadKeyboardLayoutEx(), and zzzSetWindowsHookEx().
|
|
Definition at line 1509 of file handtabl.c. References FASTCALL, HMIsMarkDestroy, HMLockObject, HMRecordLock(), HMUnlockObject, HMUnrecordLock(), HMValidateCatHandleNoSecure(), NULL, PHEAD, and TYPE_GENERIC.
|
|
Definition at line 1599 of file handtabl.c. References FASTCALL, HMRecordLock(), HMUnlockObject, HMUnrecordLock(), and NULL.
|
|
Definition at line 2220 of file handtabl.c. References tagHANDLETYPEINFO::bObjectCreateFlags, _HANDLEENTRY::bType, DBGValidateHandleQuota, gahti, HMObjectFlags, tagTDB::hTaskWow, NULL, OCF_MARKPROCESS, OCF_PROCESSOWNED, _HANDLEENTRY::phead, _HANDLEENTRY::pOwner, tagTHREADINFO::ppi, tagTHREADINFO::ptdb, TIF_16BIT, tagTHREADINFO::TIF_flags, TYPE_CURSOR, and VOID(). Referenced by DestroyProcessesObjects().
|
|
Definition at line 2112 of file handtabl.c. References tagCLS::atomClassName, tagSERVERINFO::atomSysClass, _HANDLEENTRY::bType, tagTHREADINFO::cVisWindows, tagTHREADINFO::cWindows, tagCLS::cWndReferenceCount, DBGValidateHandleQuota, DereferenceClass(), FVisCountable(), GetClassPtr(), gpsi, gptiRit, tagWND::head, HF_GLOBAL, HMObjectFlags, hModuleWin, HMPheFromObject, ICLS_ICONTITLE, LockDesktop, NULL, OCF_THREADOWNED, tagWND::pcls, PHOOK, _HANDLEENTRY::pOwner, tagTHREADINFO::ppi, PpiCurrent, tagTHREADINFO::rpdesk, TestWF, TYPE_HOOK, TYPE_WINDOW, VOID(), WFDESTROYED, and WFVISIBLE. Referenced by MarkThreadsObjects(), xxxCreateDesktop(), xxxCreateWindowStation(), xxxDestroyWindow(), xxxFreeWindow(), and xxxMNOpenHierarchy().
|
|
Definition at line 2853 of file handtabl.c. References DWORD, gpJobsList, NULL, tagW32JOB::pgh, tagW32JOB::pNext, and tagW32JOB::ughCrt. Referenced by HMFreeObject().
|
|
Definition at line 1299 of file handtabl.c. References BOOL, FALSE, HMFreeObject(), HMMarkObjectDestroy(), and TRUE. Referenced by HMNullFnDestroy().
|
|
Definition at line 2069 of file handtabl.c. References BEGINATOMICCHECK, _HANDLEENTRY::bFlags, _HANDLEENTRY::bType, _HEAD::cLockObj, ENDATOMICCHECK, tagHANDLETYPEINFO::fnDestroy, gahti, HANDLEF_DESTROY, HANDLEF_INDESTROY, _HANDLEENTRY::phead, and TYPE_FREE.
|
|
Definition at line 1069 of file handtabl.c. References tagSHAREDINFO::aheList, _HANDLEENTRY::bFlags, tagHANDLETYPEINFO::bObjectCreateFlags, BOOL, _HANDLEENTRY::bType, BYTE, DBGHMValidateFreeLists, DBGValidateHandleQuota, DesktopFree, DWORD, ExQueryPoolBlockSize(), gahti, gcHandlePages, gpHandlePages, gpvSharedAlloc, gSharedInfo, _HEAD::h, HANDLEF_GRANTED, HANDLEF_POOL, HMCleanupGrantedHandle(), HMPheFromObject, HMUNIQBITS, HtoPqCat, _HANDLEPAGE::iheFreeEven, _HANDLEPAGE::iheFreeOdd, _HANDLEPAGE::iheLimit, tagPERFINFO::lCount, tagPERFINFO::lSize, NULL, OCF_DESKTOPHEAP, OCF_PROCESSOWNED, OCF_SHAREDHEAP, OCF_THREADOWNED, _HANDLEENTRY::phead, tagDESKTOP::pheapDesktop, _LOCKRECORD::plrNext, _HANDLEENTRY::pOwner, PtoHq, RtlSizeHeap(), SharedFree(), TRUE, TYPE_FREE, UnlockDesktop, and _HANDLEENTRY::wUniq. Referenced by _BeginDeferWindowPos(), _ConvertMemHandle(), _CreateAcceleratorTable(), _DestroyMenu(), DestroyEmptyCursorObject(), DestroyEventHook(), DestroyKF(), DestroyKL(), DestroyMonitor(), DestroySMWP(), FreeDdeConv(), FreeDdeXact(), FreeHook(), FreeInputContext(), FreeTimer(), HMDestroyObject(), InternalSetTimer(), LoadKeyboardLayoutFile(), MungeClipData(), NewConversation(), NtUserDestroyAcceleratorTable(), UT_FreeCBFormat(), xxxCreateWindowEx(), xxxCsDdeInitialize(), xxxDestroyThreadDDEObject(), xxxFreeWindow(), xxxGetDummyDib(), xxxGetDummyDibV5(), and zzzSetWindowsHookEx().
|
|
Definition at line 704 of file handtabl.c. References tagSHAREDINFO::aheList, BOOL, _HANDLEENTRY::bType, tagSERVERINFO::cbHandleTable, tagSERVERINFO::cHandleEntries, CommitReadOnlyMemory(), CPAGEENTRIESINIT, DWORD, FALSE, gcHandlePages, ghSectionShared, gpHandlePages, gpsi, gpvSharedAlloc, gpvSharedBase, gSharedInfo, HMINDEXBITS, HMInitHandleEntries(), _HANDLEPAGE::iheFreeEven, _HANDLEPAGE::iheFreeOdd, _HANDLEPAGE::iheLimit, NT_SUCCESS, NTSTATUS(), NULL, PAGE_SIZE, PBYTE, _HANDLEENTRY::phead, Status, TRUE, TYPE_FREE, and _HANDLEENTRY::wUniq. Referenced by HMAllocObject().
|
|
Definition at line 529 of file handtabl.c. References tagSHAREDINFO::aheList, tagSERVERINFO::cHandleEntries, DBGHMValidateFreeLists, gpsi, gSharedInfo, NULL, _HANDLEENTRY::phead, and _HANDLEENTRY::wUniq. Referenced by HMGrowHandleTable(), and HMInitHandleTable().
|
|
Definition at line 575 of file handtabl.c. References tagSHAREDINFO::aheList, tagHANDLETYPEINFO::bObjectCreateFlags, BOOL, _HANDLEENTRY::bType, BYTE, tagSERVERINFO::cbHandleTable, tagSERVERINFO::cHandleEntries, CommitReadOnlyMemory(), CPAGEENTRIESINIT, DESKOBJHEAD, FALSE, gahti, gcHandlePages, ghSectionShared, gpHandlePages, gpsi, gSharedInfo, HANDLEPAGE, HMINDEXBITS, HMInitHandleEntries(), _HANDLEPAGE::iheFreeEven, _HANDLEPAGE::iheFreeOdd, _HANDLEPAGE::iheLimit, NT_SUCCESS, NTSTATUS(), NULL, OCF_DESKTOPHEAP, OCF_MARKPROCESS, OCF_PROCESSOWNED, OCF_SHAREDHEAP, OCF_THREADOWNED, OCF_USEPOOLIFNODESKTOP, OCF_USEPOOLQUOTA, PAGE_SIZE, _HANDLEENTRY::phead, PROCDESKHEAD, PROCOBJHEAD, Status, THRDESKHEAD, TRUE, TYPE_CTYPES, TYPE_FREE, UINT, and _HANDLEENTRY::wUniq. Referenced by Win32UserInitialize().
|
|
Definition at line 1237 of file handtabl.c. References _HANDLEENTRY::bFlags, BOOL, FALSE, HANDLEF_DESTROY, HANDLEF_INDESTROY, HANDLEF_MARKED_OK, HMPheFromObject, HMRecordLock(), LOCKRECORD_MARKDESTROY, and TRUE. Referenced by _DestroyCursor(), _DestroyMenu(), DestroyEventHook(), DestroyKF(), DestroyMonitor(), DestroySMWP(), FreeDdeConv(), FreeDdeXact(), FreeHook(), FreeInputContext(), FreeTimer(), FreeWindowStation(), HMDestroyObject(), NtUserDestroyAcceleratorTable(), UnlockAndFreeCPDs(), Win32kNtUserCleanup(), xxxDestroyThreadDDEObject(), xxxFreeWindow(), xxxInternalUnloadKeyboardLayout(), and xxxLoadKeyboardLayoutEx().
|
|
Definition at line 28 of file handtabl.c. References HMDestroyObject().
|
|
Referenced by HMAssignmentLock(), HMAssignmentUnlock(), and HMMarkObjectDestroy(). |
|
Definition at line 1472 of file handtabl.c. References _HANDLEENTRY::bFlags, HANDLEF_DESTROY, HANDLEF_INDESTROY, HMDestroyUnlockedObject(), HMPheFromObject, and NULL.
|
|
Referenced by HMAssignmentLock(), and HMAssignmentUnlock(). |
|
Definition at line 2595 of file handtabl.c. References tagSHAREDINFO::aheList, _HANDLEENTRY::bFlags, tagHANDLETYPEINFO::bObjectCreateFlags, _HANDLEENTRY::bType, gahti, giheLast, gptiRit, gSharedInfo, gTermIO, _HEAD::h, HANDLEF_DESTROY, HMChangeOwnerThread(), ISTS, OCF_PROCESSOWNED, _HANDLEENTRY::phead, _HANDLEENTRY::pOwner, tagTERMINAL::ptiDesktop, ShowLocks(), and TYPE_FREE. Referenced by xxxDestroyThreadInfo().
|
|
Referenced by MarkThreadsObjects(). |
|
Definition at line 1939 of file handtabl.c. References HMUnlockObject, NULL, PtiCurrent, tagTHREADINFO::ptl, and TRUE.
|
|
Definition at line 90 of file handtabl.c. Referenced by _QueryUserHandles(), _WOWCleanup(), DestroyHandleTableObjects(), DestroyProcessesObjects(), DestroyProcessInfo(), DestroyThreadsObjects(), HMAllocObject(), HMChangeOwnerPheProcess(), HMDestroyUnlockedObject(), HMFreeObject(), HMInitHandleTable(), IsHandleEntrySecure(), and MarkThreadsObjects(). |
|
Definition at line 208 of file handtabl.c. Referenced by HMAllocObject(), HMFreeObject(), HMGrowHandleTable(), and HMInitHandleTable(). |
|
Definition at line 209 of file handtabl.c. Referenced by HMAllocObject(), HMFreeObject(), HMGrowHandleTable(), HMInitHandleTable(), and Win32KDriverUnload(). |