#include "exp.h"
Go to the source code of this file.
Defines | |
#define | EXHANDLE_TABLE_ENTRY_LOCK_BIT ((ULONG_PTR)1 << ((sizeof(ULONG_PTR) * 8) - 1)) |
Functions | |
PHANDLE_TABLE | ExpAllocateHandleTable (IN PEPROCESS Process OPTIONAL) |
VOID | ExpFreeHandleTable (IN PHANDLE_TABLE HandleTable) |
PHANDLE_TABLE_ENTRY | ExpAllocateHandleTableEntry (IN PHANDLE_TABLE HandleTable, OUT PEXHANDLE Handle) |
VOID | ExpFreeHandleTableEntry (IN PHANDLE_TABLE HandleTable, IN EXHANDLE Handle, IN PHANDLE_TABLE_ENTRY HandleTableEntry) |
PHANDLE_TABLE_ENTRY | ExpLookupHandleTableEntry (IN PHANDLE_TABLE HandleTable, IN EXHANDLE Handle) |
NTKERNELAPI VOID | ExLockHandleTableShared (PHANDLE_TABLE HandleTable) |
NTKERNELAPI VOID | ExLockHandleTableExclusive (PHANDLE_TABLE HandleTable) |
NTKERNELAPI VOID | ExUnlockHandleTableShared (PHANDLE_TABLE HandleTable) |
NTKERNELAPI VOID | ExUnlockHandleTableExclusive (PHANDLE_TABLE HandleTable) |
NTKERNELAPI BOOLEAN | ExLockHandleTableEntry (PHANDLE_TABLE HandleTable, PHANDLE_TABLE_ENTRY HandleTableEntry) |
NTKERNELAPI VOID | ExUnlockHandleTableEntry (PHANDLE_TABLE HandleTable, PHANDLE_TABLE_ENTRY HandleTableEntry) |
NTKERNELAPI VOID | ExInitializeHandleTablePackage (VOID) |
NTKERNELAPI PHANDLE_TABLE | ExCreateHandleTable (IN struct _EPROCESS *Process OPTIONAL) |
NTKERNELAPI VOID | ExRemoveHandleTable (IN PHANDLE_TABLE HandleTable) |
NTKERNELAPI VOID | ExDestroyHandleTable (IN PHANDLE_TABLE HandleTable, IN EX_DESTROY_HANDLE_ROUTINE DestroyHandleProcedure OPTIONAL) |
NTKERNELAPI BOOLEAN | ExEnumHandleTable (IN PHANDLE_TABLE HandleTable, IN EX_ENUMERATE_HANDLE_ROUTINE EnumHandleProcedure, IN PVOID EnumParameter, OUT PHANDLE Handle OPTIONAL) |
NTKERNELAPI PHANDLE_TABLE | ExDupHandleTable (IN struct _EPROCESS *Process OPTIONAL, IN PHANDLE_TABLE OldHandleTable, IN EX_DUPLICATE_HANDLE_ROUTINE DupHandleProcedure OPTIONAL) |
NTKERNELAPI NTSTATUS | ExSnapShotHandleTables (IN PEX_SNAPSHOT_HANDLE_ENTRY SnapShotHandleEntry, IN OUT PSYSTEM_HANDLE_INFORMATION HandleInformation, IN ULONG Length, IN OUT PULONG RequiredLength) |
NTKERNELAPI HANDLE | ExCreateHandle (IN PHANDLE_TABLE HandleTable, IN PHANDLE_TABLE_ENTRY HandleTableEntry) |
NTKERNELAPI BOOLEAN | ExDestroyHandle (IN PHANDLE_TABLE HandleTable, IN HANDLE Handle, IN PHANDLE_TABLE_ENTRY HandleTableEntry OPTIONAL) |
NTKERNELAPI BOOLEAN | ExChangeHandle (IN PHANDLE_TABLE HandleTable, IN HANDLE Handle, IN PEX_CHANGE_HANDLE_ROUTINE ChangeRoutine, IN ULONG_PTR Parameter) |
NTKERNELAPI PHANDLE_TABLE_ENTRY | ExMapHandleToPointer (IN PHANDLE_TABLE HandleTable, IN HANDLE Handle) |
Variables | |
ERESOURCE | HandleTableListLock |
LIST_ENTRY | HandleTableListHead |
LARGE_INTEGER | Ex10Milliseconds = {(ULONG)(-10 * 1000 * 10), -1} |
|
Definition at line 44 of file ex/handle.c. Referenced by ExLockHandleTableEntry(), and ExUnlockHandleTableEntry(). |
|
Definition at line 1315 of file ex/handle.c. References ExLockHandleTableEntry(), ExpLookupHandleTableEntry(), ExUnlockHandleTableEntry(), FALSE, _EXHANDLE::GenericHandleOverlay, Handle, KeEnterCriticalRegion, KeLeaveCriticalRegion, NULL, and PAGED_CODE. Referenced by NtSetInformationObject(), PspCreateThread(), and PspExitThread().
|
|
Definition at line 1144 of file ex/handle.c. References ExLockHandleTableExclusive(), ExpAllocateHandleTableEntry(), ExUnlockHandleTableEntry(), ExUnlockHandleTableExclusive(), Handle, KeEnterCriticalRegion, KeLeaveCriticalRegion, NULL, and PAGED_CODE. Referenced by DoHandleTest(), NtDuplicateObject(), ObpCreateHandle(), ObpCreateUnnamedHandle(), PspCreateThread(), and RtlpCreateHandleForAtom().
|
|
Definition at line 457 of file ex/handle.c. References ExpAllocateHandleTable(), and PAGED_CODE. Referenced by DoHandleTest(), ObInitProcess(), ObInitSystem(), PspInitPhase0(), and RtlpInitializeHandleTableForAtomTable().
|
|
Definition at line 1227 of file ex/handle.c. References ExLockHandleTableEntry(), ExLockHandleTableExclusive(), ExpFreeHandleTableEntry(), ExpLookupHandleTableEntry(), ExUnlockHandleTableExclusive(), FALSE, _EXHANDLE::GenericHandleOverlay, Handle, KeEnterCriticalRegion, KeLeaveCriticalRegion, NULL, PAGED_CODE, and TRUE. Referenced by DoHandleTest(), NtClose(), PspProcessDelete(), PspThreadDelete(), and RtlpFreeHandleForAtom().
|
|
Definition at line 560 of file ex/handle.c. References ExpFreeHandleTable(), ExpLookupHandleTableEntry(), ExRemoveHandleTable(), Handle, NULL, _HANDLE_TABLE_ENTRY::Object, and PAGED_CODE. Referenced by DoHandleTest(), ObKillProcess(), and RtlpDestroyHandleTableForAtomTable().
|
|
Definition at line 765 of file ex/handle.c. References ExLockHandleTableEntry(), ExLockHandleTableShared(), ExpAllocateHandleTable(), ExpAllocateHandleTableEntry(), ExpFreeHandleTable(), ExpFreeHandleTableEntry(), ExpLookupHandleTableEntry(), ExUnlockHandleTableEntry(), ExUnlockHandleTableShared(), _HANDLE_TABLE::FirstFreeTableEntry, Handle, _HANDLE_TABLE::HandleCount, KeEnterCriticalRegion, KeLeaveCriticalRegion, _HANDLE_TABLE_ENTRY::NextFreeTableEntry, _HANDLE_TABLE::NextIndexNeedingPool, NULL, _HANDLE_TABLE_ENTRY::Object, and PAGED_CODE. Referenced by DoHandleTest(), and ObInitProcess().
|
|
Definition at line 634 of file ex/handle.c. References ExLockHandleTableEntry(), ExLockHandleTableShared(), ExpLookupHandleTableEntry(), ExUnlockHandleTableEntry(), ExUnlockHandleTableShared(), FALSE, _EXHANDLE::GenericHandleOverlay, Handle, _EXHANDLE::Index, KeEnterCriticalRegion, KeLeaveCriticalRegion, NULL, _HANDLE_TABLE_ENTRY::Object, PAGED_CODE, and TRUE. Referenced by DoHandleTest(), ObFindHandleForObject(), and ObInitProcess().
|
|
Definition at line 422 of file ex/handle.c. References ExInitializeResource, HandleTableListHead, and HandleTableListLock.
|
|
Definition at line 240 of file ex/handle.c. References Ex10Milliseconds, Executive, EXHANDLE_TABLE_ENTRY_LOCK_BIT, FALSE, _HANDLE_TABLE::HandleContentionEvent, KernelMode, KeStallExecutionProcessor(), KeWaitForSingleObject(), _HANDLE_TABLE_ENTRY::Object, PAGED_CODE, and TRUE. Referenced by ExChangeHandle(), ExDestroyHandle(), ExDupHandleTable(), ExEnumHandleTable(), ExMapHandleToPointer(), and ExSnapShotHandleTables().
|
|
Definition at line 146 of file ex/handle.c. References ExAcquireResourceExclusive, _HANDLE_TABLE::HandleTableLock, PAGED_CODE, TRUE, and VOID(). Referenced by ExCreateHandle(), ExDestroyHandle(), and ExSnapShotHandleTables().
|
|
Definition at line 114 of file ex/handle.c. References ExAcquireResourceShared, _HANDLE_TABLE::HandleTableLock, PAGED_CODE, TRUE, and VOID(). Referenced by ExDupHandleTable(), and ExEnumHandleTable().
|
|
Definition at line 1403 of file ex/handle.c. References ExLockHandleTableEntry(), ExpLookupHandleTableEntry(), _EXHANDLE::GenericHandleOverlay, Handle, NULL, and PAGED_CODE. Referenced by DoHandleTest(), NtClose(), NtWaitForMultipleObjects(), ObQueryObjectAuditingByHandle(), ObReferenceObjectByHandle(), PsLookupProcessByProcessId(), PsLookupProcessThreadByCid(), PsLookupThreadByThreadId(), and RtlpAtomMapAtomToHandleEntry().
|
|
Definition at line 1475 of file ex/handle.c. References ExAcquireResourceExclusive, ExAllocatePoolWithTag, EXCEPTION_EXECUTE_HANDLER, ExFreePool(), ExInitializeResource, ExReleaseResource, FALSE, _HANDLE_TABLE::FirstFreeTableEntry, HANDLE_TABLE, HANDLE_TABLE_ENTRY, _HANDLE_TABLE::HandleContentionEvent, _HANDLE_TABLE::HandleTableList, HandleTableListHead, HandleTableListLock, _HANDLE_TABLE::HandleTableLock, KeEnterCriticalRegion, KeInitializeEvent, KeLeaveCriticalRegion, _HANDLE_TABLE_ENTRY::NextFreeTableEntry, _HANDLE_TABLE::NextIndexNeedingPool, NonPagedPool, NULL, PAGED_CODE, PagedPool, POOL_RAISE_IF_ALLOCATION_FAILURE, PsChargePoolQuota(), PsGetCurrentProcess, PsReturnPoolQuota(), _HANDLE_TABLE::QuotaProcess, _HANDLE_TABLE::Table, TRUE, and _HANDLE_TABLE::UniqueProcessId. Referenced by ExCreateHandleTable(), and ExDupHandleTable().
|
|
Definition at line 1825 of file ex/handle.c. References ExAllocatePoolWithTag, EXCEPTION_EXECUTE_HANDLER, ExFreePool(), ExpLookupHandleTableEntry(), FALSE, Handle, HANDLE_TABLE_ENTRY, _HANDLE_TABLE_ENTRY::NextFreeTableEntry, NULL, PAGED_CODE, PagedPool, POOL_RAISE_IF_ALLOCATION_FAILURE, PsChargePoolQuota(), PsReturnPoolQuota(), and TRUE. Referenced by ExCreateHandle(), and ExDupHandleTable().
|
|
Definition at line 1667 of file ex/handle.c. References ExDeleteResource, ExFreePool(), NonPagedPool, NULL, PAGED_CODE, PagedPool, and PsReturnPoolQuota(). Referenced by ExDestroyHandleTable(), and ExDupHandleTable().
|
|
Definition at line 2127 of file ex/handle.c. References Handle, and PAGED_CODE. Referenced by ExDestroyHandle(), and ExDupHandleTable().
|
|
Definition at line 2195 of file ex/handle.c. References Handle, NULL, and PAGED_CODE. Referenced by ExChangeHandle(), ExDestroyHandle(), ExDestroyHandleTable(), ExDupHandleTable(), ExEnumHandleTable(), ExMapHandleToPointer(), ExpAllocateHandleTableEntry(), and ExSnapShotHandleTables().
|
|
Definition at line 501 of file ex/handle.c. References ExAcquireResourceExclusive, ExReleaseResource, HandleTableListLock, KeEnterCriticalRegion, KeLeaveCriticalRegion, PAGED_CODE, and TRUE. Referenced by ExDestroyHandleTable(), PspInitPhase0(), and RtlpInitializeHandleTableForAtomTable().
|
|
Definition at line 984 of file ex/handle.c. References ExAcquireResourceExclusive, ExLockHandleTableEntry(), ExLockHandleTableExclusive(), ExpLookupHandleTableEntry(), ExReleaseResource, ExUnlockHandleTableEntry(), ExUnlockHandleTableExclusive(), Handle, HandleTableListHead, HandleTableListLock, KeEnterCriticalRegion, KeLeaveCriticalRegion, NTSTATUS(), NULL, _HANDLE_TABLE_ENTRY::Object, PAGED_CODE, Status, TRUE, and _HANDLE_TABLE::UniqueProcessId. Referenced by ObGetHandleInformation().
|
|
Definition at line 336 of file ex/handle.c. References EVENT_INCREMENT, EXHANDLE_TABLE_ENTRY_LOCK_BIT, FALSE, _HANDLE_TABLE::HandleContentionEvent, _KEVENT::Header, KeBugCheckEx(), KePulseEvent(), _HANDLE_TABLE_ENTRY::Object, PAGED_CODE, and _DISPATCHER_HEADER::WaitListHead. Referenced by ExChangeHandle(), ExCreateHandle(), ExDupHandleTable(), ExEnumHandleTable(), ExSnapShotHandleTables(), NtClose(), NtWaitForMultipleObjects(), ObQueryObjectAuditingByHandle(), ObReferenceObjectByHandle(), PsLookupProcessByProcessId(), PsLookupProcessThreadByCid(), PsLookupThreadByThreadId(), and RtlpAtomMapAtomToHandleEntry().
|
|
Definition at line 209 of file ex/handle.c. References ExReleaseResource, _HANDLE_TABLE::HandleTableLock, PAGED_CODE, and VOID(). Referenced by ExCreateHandle(), ExDestroyHandle(), and ExSnapShotHandleTables().
|
|
Definition at line 178 of file ex/handle.c. References ExReleaseResource, _HANDLE_TABLE::HandleTableLock, PAGED_CODE, and VOID(). Referenced by ExDupHandleTable(), and ExEnumHandleTable().
|
|
Definition at line 51 of file ex/handle.c. Referenced by ExLockHandleTableEntry(). |
|
Definition at line 37 of file ex/handle.c. Referenced by ExInitializeHandleTablePackage(), ExpAllocateHandleTable(), and ExSnapShotHandleTables(). |
|
Definition at line 36 of file ex/handle.c. Referenced by ExInitializeHandleTablePackage(), ExpAllocateHandleTable(), ExRemoveHandleTable(), and ExSnapShotHandleTables(). |