[SDK] Minor improvements to CRT, RTL, and headers
Signed-off-by: Quinn Stephens <quinn@osmora.org>
This commit is contained in:
@@ -111,44 +111,19 @@ typedef long long LONGLONG;
|
||||
typedef unsigned long long ULONGLONG;
|
||||
#endif
|
||||
|
||||
typedef LONGLONG *PLONGLONG;
|
||||
typedef ULONGLONG *PULONGLONG;
|
||||
|
||||
#define MAXLONGLONG 0x7fffffffffffffff
|
||||
#define MAXULONGLONG 0xffffffffffffffff
|
||||
|
||||
#define LODWORD(x) ((ULONG)(x))
|
||||
#define HIDWORD(x) ((ULONG)((x) >> 32))
|
||||
|
||||
#define LOWORD(x) ((USHORT)(x))
|
||||
#define HIWORD(x) ((USHORT)((x) >> 16))
|
||||
|
||||
#define LOBYTE(x) ((UCHAR)(x))
|
||||
#define HIBYTE(x) ((UCHAR)((x) >> 8))
|
||||
|
||||
//
|
||||
// Logical/boolean value types.
|
||||
//
|
||||
typedef ULONG LOGICAL;
|
||||
typedef ULONG *PLOGICAL;
|
||||
typedef int BOOL;
|
||||
typedef BOOL *PBOOL;
|
||||
typedef UCHAR BOOLEAN;
|
||||
typedef BOOLEAN *PBOOLEAN;
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
//
|
||||
// Basic pointer types.
|
||||
//
|
||||
typedef VOID *PVOID;
|
||||
typedef CHAR *PCHAR;
|
||||
typedef SHORT *PSHORT;
|
||||
typedef UCHAR *PUCHAR;
|
||||
typedef USHORT *PUSHORT;
|
||||
typedef ULONG *PULONG;
|
||||
|
||||
//
|
||||
// Numeric pointer types.
|
||||
//
|
||||
@@ -160,6 +135,29 @@ typedef LONG LONG_PTR;
|
||||
typedef ULONG ULONG_PTR;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Basic type pointers.
|
||||
//
|
||||
typedef VOID *PVOID;
|
||||
typedef CHAR *PCHAR;
|
||||
typedef SHORT *PSHORT;
|
||||
typedef UCHAR *PUCHAR;
|
||||
typedef USHORT *PUSHORT;
|
||||
typedef ULONG *PULONG;
|
||||
|
||||
//
|
||||
// Long long type pointers.
|
||||
//
|
||||
typedef LONGLONG *PLONGLONG;
|
||||
typedef ULONGLONG *PULONGLONG;
|
||||
|
||||
//
|
||||
// Logical/boolean type pointers.
|
||||
//
|
||||
typedef ULONG *PLOGICAL;
|
||||
typedef BOOL *PBOOL;
|
||||
typedef BOOLEAN *PBOOLEAN;
|
||||
|
||||
//
|
||||
// String types.
|
||||
//
|
||||
@@ -210,6 +208,16 @@ typedef NTSTATUS *PNTSTATUS;
|
||||
#define ALIGN_DOWN(x, a) ((x) & ~((a) - 1))
|
||||
#define ALIGN_UP(x, a) ALIGN_DOWN((x) + (a) - 1, a)
|
||||
|
||||
//
|
||||
// Bit extraction helpers.
|
||||
//
|
||||
#define LODWORD(x) ((ULONG)(x))
|
||||
#define HIDWORD(x) ((ULONG)((x) >> 32))
|
||||
#define LOWORD(x) ((USHORT)(x))
|
||||
#define HIWORD(x) ((USHORT)((x) >> 16))
|
||||
#define LOBYTE(x) ((UCHAR)(x))
|
||||
#define HIBYTE(x) ((UCHAR)((x) >> 8))
|
||||
|
||||
//
|
||||
// Large (64-bit) integer value.
|
||||
//
|
||||
@@ -234,135 +242,6 @@ typedef union ULARGE_INTEGER {
|
||||
ULONGLONG QuadPart;
|
||||
} ULARGE_INTEGER, *PULARGE_INTEGER;
|
||||
|
||||
//
|
||||
// Doubly-linked list entry.
|
||||
//
|
||||
typedef struct _LIST_ENTRY {
|
||||
struct _LIST_ENTRY *Flink;
|
||||
struct _LIST_ENTRY *Blink;
|
||||
} LIST_ENTRY, *PLIST_ENTRY;
|
||||
|
||||
FORCEINLINE
|
||||
VOID
|
||||
InitializeListHead (
|
||||
IN PLIST_ENTRY Head
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initializes a list head.
|
||||
|
||||
Arguments:
|
||||
|
||||
Head - the list head.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
Head->Blink = Head;
|
||||
Head->Flink = Head;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
VOID
|
||||
InsertHeadList (
|
||||
IN PLIST_ENTRY Head,
|
||||
IN PLIST_ENTRY Entry
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Inserts a list entry at the head of a list.
|
||||
|
||||
Arguments:
|
||||
|
||||
Entry - The list entry.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
Entry->Flink = Head->Flink;
|
||||
Entry->Blink = Head;
|
||||
Head->Flink->Blink = Entry;
|
||||
Head->Flink = Entry;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
VOID
|
||||
InsertTailList (
|
||||
IN PLIST_ENTRY Head,
|
||||
IN PLIST_ENTRY Entry
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Inserts a list entry at the tail of a list.
|
||||
|
||||
Arguments:
|
||||
|
||||
Entry - The list entry.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
Entry->Blink = Head->Blink;
|
||||
Entry->Flink = Head;
|
||||
Head->Blink->Flink = Entry;
|
||||
Head->Blink = Entry;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
BOOLEAN
|
||||
RemoveEntryList (
|
||||
IN PLIST_ENTRY Entry
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Removes a list entry from a list.
|
||||
|
||||
Arguments:
|
||||
|
||||
Entry - the entry to remove.
|
||||
|
||||
Return Value:
|
||||
|
||||
True if the list is now empty,
|
||||
False if the list still has at least one entry.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
PLIST_ENTRY Blink, Flink;
|
||||
|
||||
Blink = Entry->Blink;
|
||||
Flink = Entry->Flink;
|
||||
Blink->Flink = Flink;
|
||||
Flink->Blink = Blink;
|
||||
|
||||
return (BOOLEAN)(Flink == Blink);
|
||||
}
|
||||
|
||||
//
|
||||
// Unicode string.
|
||||
//
|
||||
@@ -377,6 +256,14 @@ typedef CONST UNICODE_STRING *PCUNICODE_STRING;
|
||||
|
||||
#define MAX_USTRING ALIGN_DOWN(MAXUSHORT, sizeof(WCHAR))
|
||||
|
||||
//
|
||||
// Doubly-linked list entry.
|
||||
//
|
||||
typedef struct _LIST_ENTRY {
|
||||
struct _LIST_ENTRY *Flink;
|
||||
struct _LIST_ENTRY *Blink;
|
||||
} LIST_ENTRY, *PLIST_ENTRY;
|
||||
|
||||
#include <guiddef.h>
|
||||
|
||||
#endif /* !_NTDEF_H */
|
||||
|
@@ -19,7 +19,7 @@ Abstract:
|
||||
//
|
||||
// Machine type values.
|
||||
//
|
||||
#define IMAGE_FILE_MACHINE_UNKNOWN 0
|
||||
#define IMAGE_FILE_MACHINE_UNKNOWN 0x0000
|
||||
#define IMAGE_FILE_MACHINE_I386 0x014c
|
||||
#define IMAGE_FILE_MACHINE_AMD64 0x8664
|
||||
|
||||
|
@@ -16,9 +16,9 @@ Abstract:
|
||||
#ifndef _NTRTL_H
|
||||
#define _NTRTL_H
|
||||
|
||||
#include <string.h>
|
||||
#include <ntdef.h>
|
||||
#include <ntstatus.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
//
|
||||
// Memory operations.
|
||||
@@ -28,7 +28,128 @@ Abstract:
|
||||
#define RtlFillMemory(Destination, Length, Fill) memset((Destination), (Fill), (Length))
|
||||
#define RtlZeroMemory(Destination, Length) memset((Destination), 0, (Length))
|
||||
|
||||
#define ULONG_ERROR 0xFFFFFFFFUL
|
||||
FORCEINLINE
|
||||
VOID
|
||||
InitializeListHead (
|
||||
IN PLIST_ENTRY Head
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Initializes a list head.
|
||||
|
||||
Arguments:
|
||||
|
||||
Head - Pointer to the list's head.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
Head->Blink = Head;
|
||||
Head->Flink = Head;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
VOID
|
||||
InsertHeadList (
|
||||
IN PLIST_ENTRY Head,
|
||||
IN PLIST_ENTRY Entry
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Inserts an entry at the head of a list.
|
||||
|
||||
Arguments:
|
||||
|
||||
Entry - Pointer to the list entry to insert.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
Entry->Flink = Head->Flink;
|
||||
Entry->Blink = Head;
|
||||
Head->Flink->Blink = Entry;
|
||||
Head->Flink = Entry;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
VOID
|
||||
InsertTailList (
|
||||
IN PLIST_ENTRY Head,
|
||||
IN PLIST_ENTRY Entry
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Inserts an entry at the tail of a list.
|
||||
|
||||
Arguments:
|
||||
|
||||
Entry - Pointer to the list entry to insert.
|
||||
|
||||
Return Value:
|
||||
|
||||
None.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
Entry->Blink = Head->Blink;
|
||||
Entry->Flink = Head;
|
||||
Head->Blink->Flink = Entry;
|
||||
Head->Blink = Entry;
|
||||
}
|
||||
|
||||
FORCEINLINE
|
||||
BOOLEAN
|
||||
RemoveEntryList (
|
||||
IN PLIST_ENTRY Entry
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Removes an entry from a list.
|
||||
|
||||
Arguments:
|
||||
|
||||
Entry - Pointer to the entry to remove.
|
||||
|
||||
Return Value:
|
||||
|
||||
TRUE if the list is now empty,
|
||||
FALSE if the list still has at least one entry.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
PLIST_ENTRY Blink, Flink;
|
||||
|
||||
Blink = Entry->Blink;
|
||||
Flink = Entry->Flink;
|
||||
Blink->Flink = Flink;
|
||||
Flink->Blink = Blink;
|
||||
|
||||
return (BOOLEAN)(Flink == Blink);
|
||||
}
|
||||
|
||||
#define ULONG_ERROR 0xffffffffUL
|
||||
|
||||
FORCEINLINE
|
||||
NTSTATUS
|
||||
@@ -83,4 +204,8 @@ RtlGUIDFromString (
|
||||
OUT GUID *Guid
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_NTRTL_H */
|
||||
|
Reference in New Issue
Block a user