55 HandlerRemoved =
FALSE;
66 CurrentEntry = VectoredHandlerList->
Flink;
67 while (CurrentEntry != VectoredHandlerList)
75 VectoredExceptionHandler->
Refs++;
88 HandlerReturn = VectoredHandler(&ExceptionInfo);
94 VectoredExceptionHandler->
Refs--;
95 if (VectoredExceptionHandler->
Refs == 0)
102 HandlerRemoved =
TRUE;
117 VectoredExceptionHandler);
131 CurrentEntry = CurrentEntry->
Flink;
145 VectoredExceptionHandler);
164 if (!VectoredHandlerEntry)
return NULL;
168 VectoredHandlerEntry->
Refs = 1;
192 return VectoredHandlerEntry;
206 HandlerRemoved =
FALSE;
207 HandlerFound =
FALSE;
213 CurrentEntry = VectoredHandlerList->
Flink;
214 while (CurrentEntry != VectoredHandlerList)
222 if (VectoredExceptionHandler == VectoredHandlerHandle)
236 VectoredExceptionHandler->
Refs--;
237 if (VectoredExceptionHandler->
Refs == 0)
241 HandlerRemoved =
TRUE;
251 CurrentEntry = CurrentEntry->
Flink;
264 VectoredExceptionHandler);
268 return (
ULONG)HandlerFound;
PVECTORED_EXCEPTION_HANDLER VectoredHandler
struct _RTL_VECTORED_HANDLER_ENTRY RTL_VECTORED_HANDLER_ENTRY
DECLSPEC_HOTPATCH PVOID NTAPI RtlAddVectoredContinueHandler(IN ULONG FirstHandler, IN PVECTORED_EXCEPTION_HANDLER VectoredHandler)
NTSYSAPI PVOID WINAPI RtlEncodePointer(PVOID)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
LONG(NTAPI * PVECTORED_EXCEPTION_HANDLER)(PEXCEPTION_POINTERS ExceptionPointers)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
VOID NTAPI RtlCallVectoredContinueHandlers(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT Context)
#define InsertTailList(ListHead, Entry)
ULONG NTAPI RtlRemoveVectoredExceptionHandler(IN PVOID VectoredHandlerHandle)
ULONG NTAPI RtlpRemoveVectoredHandler(IN PVOID VectoredHandlerHandle, IN PLIST_ENTRY VectoredHandlerList)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
BOOLEAN NTAPI RtlpCallVectoredHandlers(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT Context, IN PLIST_ENTRY VectoredHandlerList)
#define EXCEPTION_CONTINUE_SEARCH
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
ULONG NTAPI RtlRemoveVectoredContinueHandler(IN PVOID VectoredHandlerHandle)
RTL_CRITICAL_SECTION RtlpVectoredHandlerLock
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
LIST_ENTRY RtlpVectoredContinueList
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
#define DECLSPEC_HOTPATCH
struct _LIST_ENTRY * Flink
struct _RTL_VECTORED_HANDLER_ENTRY * PRTL_VECTORED_HANDLER_ENTRY
BOOLEAN NTAPI RtlCallVectoredExceptionHandlers(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT Context)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
VOID NTAPI RtlpInitializeVectoredExceptionHandling(VOID)
DECLSPEC_HOTPATCH PVOID NTAPI RtlAddVectoredExceptionHandler(IN ULONG FirstHandler, IN PVECTORED_EXCEPTION_HANDLER VectoredHandler)
PVOID NTAPI RtlpAddVectoredHandler(IN ULONG FirstHandler, IN PVECTORED_EXCEPTION_HANDLER VectoredHandler, IN PLIST_ENTRY VectoredHandlerList)
#define InitializeListHead(ListHead)
LIST_ENTRY RtlpVectoredExceptionList
struct tagContext Context
PEXCEPTION_RECORD ExceptionRecord
NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID)
#define EXCEPTION_CONTINUE_EXECUTION