summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/ntxcapi.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/ntxcapi.h336
1 files changed, 336 insertions, 0 deletions
diff --git a/public/sdk/inc/ntxcapi.h b/public/sdk/inc/ntxcapi.h
new file mode 100644
index 000000000..55b242c65
--- /dev/null
+++ b/public/sdk/inc/ntxcapi.h
@@ -0,0 +1,336 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntxcapi.h
+
+Abstract:
+
+ This module contains procedure prototypes and data structures
+ that support structured exception handling.
+
+Author:
+
+ Mark Lucovsky (markl) 29-Jun-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTXCAPI_
+#define _NTXCAPI_
+
+// begin_ntddk
+//
+// Exception flag definitions.
+//
+
+// begin_winnt
+#define EXCEPTION_NONCONTINUABLE 0x1 // Noncontinuable exception
+// end_winnt
+
+// end_ntddk
+#define EXCEPTION_UNWINDING 0x2 // Unwind is in progress
+#define EXCEPTION_EXIT_UNWIND 0x4 // Exit unwind is in progress
+#define EXCEPTION_STACK_INVALID 0x8 // Stack out of limits or unaligned
+#define EXCEPTION_NESTED_CALL 0x10 // Nested exception handler call
+#define EXCEPTION_TARGET_UNWIND 0x20 // Target unwind in progress
+#define EXCEPTION_COLLIDED_UNWIND 0x40 // Collided exception handler call
+
+#define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \
+ EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND)
+
+#define IS_UNWINDING(Flag) ((Flag & EXCEPTION_UNWIND) != 0)
+#define IS_DISPATCHING(Flag) ((Flag & EXCEPTION_UNWIND) == 0)
+#define IS_TARGET_UNWIND(Flag) (Flag & EXCEPTION_TARGET_UNWIND)
+
+// begin_ntddk begin_nthal
+//
+// Define maximum number of exception parameters.
+//
+
+// begin_winnt
+#define EXCEPTION_MAXIMUM_PARAMETERS 15 // maximum number of exception parameters
+
+//
+// Exception record definition.
+//
+
+typedef struct _EXCEPTION_RECORD {
+ /*lint -e18 */ // Don't complain about different definitions
+ NTSTATUS ExceptionCode;
+ /*lint +e18 */ // Resume checking for different definitions
+ ULONG ExceptionFlags;
+ struct _EXCEPTION_RECORD *ExceptionRecord;
+ PVOID ExceptionAddress;
+ ULONG NumberParameters;
+ ULONG ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+ } EXCEPTION_RECORD;
+
+typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
+
+//
+// Typedef for pointer returned by exception_info()
+//
+
+typedef struct _EXCEPTION_POINTERS {
+ PEXCEPTION_RECORD ExceptionRecord;
+ PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
+// end_winnt
+
+// end_ntddk end_nthal
+
+//
+// Define IEEE exception information.
+//
+// Define 32-, 64-, 80-, and 128-bit IEEE floating operand structures.
+//
+
+typedef struct _FP_32 {
+ ULONG W[1];
+} FP_32, *PFP_32;
+
+typedef struct _FP_64 {
+ ULONG W[2];
+} FP_64, *PFP_64;
+
+typedef struct _FP_80 {
+ ULONG W[3];
+} FP_80, *PFP_80;
+
+typedef struct _FP_128 {
+ ULONG W[4];
+} FP_128, *PFP_128;
+
+//
+// Define IEEE compare result values.
+//
+
+typedef enum _FP_IEEE_COMPARE_RESULT {
+ FpCompareEqual,
+ FpCompareGreater,
+ FpCompareLess,
+ FpCompareUnordered
+} FP_IEEE_COMPARE_RESULT;
+
+//
+// Define IEEE format and result precision values.
+//
+
+typedef enum _FP__IEEE_FORMAT {
+ FpFormatFp32,
+ FpFormatFp64,
+ FpFormatFp80,
+ FpFormatFp128,
+ FpFormatI16,
+ FpFormatI32,
+ FpFormatI64,
+ FpFormatU16,
+ FpFormatU32,
+ FpFormatU64,
+ FpFormatCompare,
+ FpFormatString
+} FP_IEEE_FORMAT;
+
+//
+// Define IEEE operation code values.
+//
+
+typedef enum _FP_IEEE_OPERATION_CODE {
+ FpCodeUnspecified,
+ FpCodeAdd,
+ FpCodeSubtract,
+ FpCodeMultiply,
+ FpCodeDivide,
+ FpCodeSquareRoot,
+ FpCodeRemainder,
+ FpCodeCompare,
+ FpCodeConvert,
+ FpCodeRound,
+ FpCodeTruncate,
+ FpCodeFloor,
+ FpCodeCeil,
+ FpCodeAcos,
+ FpCodeAsin,
+ FpCodeAtan,
+ FpCodeAtan2,
+ FpCodeCabs,
+ FpCodeCos,
+ FpCodeCosh,
+ FpCodeExp,
+ FpCodeFabs,
+ FpCodeFmod,
+ FpCodeFrexp,
+ FpCodeHypot,
+ FpCodeLdexp,
+ FpCodeLog,
+ FpCodeLog10,
+ FpCodeModf,
+ FpCodePow,
+ FpCodeSin,
+ FpCodeSinh,
+ FpCodeTan,
+ FpCodeTanh,
+ FpCodeY0,
+ FpCodeY1,
+ FpCodeYn
+} FP_OPERATION_CODE;
+
+//
+// Define IEEE rounding modes.
+//
+
+typedef enum _FP__IEEE_ROUNDING_MODE {
+ FpRoundNearest,
+ FpRoundMinusInfinity,
+ FpRoundPlusInfinity,
+ FpRoundChopped
+} FP_IEEE_ROUNDING_MODE;
+
+//
+// Define IEEE floating exception operand structure.
+//
+
+typedef struct _FP_IEEE_VALUE {
+ union {
+ SHORT I16Value;
+ USHORT U16Value;
+ LONG I32Value;
+ ULONG U32Value;
+ PVOID StringValue;
+ ULONG CompareValue;
+ FP_32 Fp32Value;
+ LARGE_INTEGER I64Value;
+ ULARGE_INTEGER U64Value;
+ FP_64 Fp64Value;
+ FP_80 Fp80Value;
+ FP_128 Fp128Value;
+ } Value;
+
+ struct {
+ ULONG RoundingMode : 2;
+ ULONG Inexact : 1;
+ ULONG Underflow : 1;
+ ULONG Overflow : 1;
+ ULONG ZeroDivide : 1;
+ ULONG InvalidOperation : 1;
+ ULONG OperandValid : 1;
+ ULONG Format : 4;
+ ULONG Precision : 4;
+ ULONG Operation : 12;
+ ULONG Spare : 3;
+ ULONG HardwareException : 1;
+ } Control;
+
+} FP_IEEE_VALUE, *PFP_IEEE_VALUE;
+
+//
+// Define IEEE exception infomation structure.
+//
+
+#include "pshpack4.h"
+typedef struct _FP_IEEE_RECORD {
+ FP_IEEE_VALUE Operand1;
+ FP_IEEE_VALUE Operand2;
+ FP_IEEE_VALUE Result;
+} FP_IEEE_RECORD, *PFP_IEEE_RECORD;
+#include "poppack.h"
+
+//
+// Exception dispatcher routine definition.
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDispatchException (
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT ContextRecord
+ );
+
+//
+// Exception handling procedure prototypes.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlRaiseStatus (
+ IN NTSTATUS Status
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlRaiseException (
+ IN PEXCEPTION_RECORD
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlUnwind (
+ IN PVOID TargetFrame OPTIONAL,
+ IN PVOID TargetIp OPTIONAL,
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN PVOID ReturnValue
+ );
+
+#if defined(_ALPHA_)
+
+NTSYSAPI
+VOID
+NTAPI
+RtlUnwindRfp (
+ IN PVOID TargetRealFrame OPTIONAL,
+ IN PVOID TargetIp OPTIONAL,
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN PVOID ReturnValue
+ );
+
+#endif
+
+#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)
+
+NTSYSAPI
+VOID
+NTAPI
+RtlUnwind2 (
+ IN PVOID TargetFrame OPTIONAL,
+ IN PVOID TargetIp OPTIONAL,
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN PVOID ReturnValue,
+ IN PCONTEXT ContextRecord
+ );
+
+#endif
+
+//
+// Continue execution.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtContinue (
+ IN PCONTEXT ContextRecord,
+ IN BOOLEAN TestAlert
+ );
+
+//
+// Raise exception.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRaiseException (
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT ContextRecord,
+ IN BOOLEAN FirstChance
+ );
+
+#endif //_NTXCAPI_