From 39b266b7284a7df7fb91a08dc28cf5cd28d4cbcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Bi=C8=99oc?= Date: Sun, 2 May 2021 20:49:06 +0200 Subject: [PATCH] [NTOSKRNL] Move the ICIF related code and stuff into a separate header file For easier accessibility for the APITESTs and whatnot. --- ntoskrnl/include/internal/icif.h | 41 ++++++++++++++++++++++++++++ ntoskrnl/include/internal/ntoskrnl.h | 35 +----------------------- 2 files changed, 42 insertions(+), 34 deletions(-) create mode 100644 ntoskrnl/include/internal/icif.h diff --git a/ntoskrnl/include/internal/icif.h b/ntoskrnl/include/internal/icif.h new file mode 100644 index 00000000000..119958e54b4 --- /dev/null +++ b/ntoskrnl/include/internal/icif.h @@ -0,0 +1,41 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: Internal header for information classes info interface + * COPYRIGHT: Copyright ??? + * Copyright 2020 George Bișoc + */ + +#pragma once + +/* + * Implement generic information class probing code in a + * separate header within the NT kernel header internals. + * This makes it accessible to other sources by including + * the header. + */ + +#define ICIF_NONE 0x0 +#define ICIF_QUERY 0x1 +#define ICIF_SET 0x2 +#define ICIF_QUERY_SIZE_VARIABLE 0x4 +#define ICIF_SET_SIZE_VARIABLE 0x8 +#define ICIF_SIZE_VARIABLE (ICIF_QUERY_SIZE_VARIABLE | ICIF_SET_SIZE_VARIABLE) + +typedef struct _INFORMATION_CLASS_INFO +{ + USHORT RequiredSizeQUERY; + UCHAR AlignmentQUERY; + USHORT RequiredSizeSET; + UCHAR AlignmentSET; + USHORT Flags; +} INFORMATION_CLASS_INFO, *PINFORMATION_CLASS_INFO; + +#define IQS_SAME(Type, Alignment, Flags) \ + { sizeof(Type), sizeof(Alignment), sizeof(Type), sizeof(Alignment), Flags } + +#define IQS(TypeQuery, AlignmentQuery, TypeSet, AlignmentSet, Flags) \ + { sizeof(TypeQuery), sizeof(AlignmentQuery), sizeof(TypeSet), sizeof(AlignmentSet), Flags } + +#define IQS_NONE \ + { 0, 0, 0, 0, ICIF_NONE } diff --git a/ntoskrnl/include/internal/ntoskrnl.h b/ntoskrnl/include/internal/ntoskrnl.h index f0c754ffa40..a49bfb9b57e 100644 --- a/ntoskrnl/include/internal/ntoskrnl.h +++ b/ntoskrnl/include/internal/ntoskrnl.h @@ -78,43 +78,10 @@ #include "vdm.h" #include "hal.h" #include "hdl.h" +#include "icif.h" #include "arch/intrin_i.h" #include -/* - * generic information class probing code - */ - -#define ICIF_QUERY 0x1 -#define ICIF_SET 0x2 -#define ICIF_QUERY_SIZE_VARIABLE 0x4 -#define ICIF_SET_SIZE_VARIABLE 0x8 -#define ICIF_SIZE_VARIABLE (ICIF_QUERY_SIZE_VARIABLE | ICIF_SET_SIZE_VARIABLE) - -typedef struct _INFORMATION_CLASS_INFO -{ - ULONG RequiredSizeQUERY; - ULONG RequiredSizeSET; - ULONG AlignmentSET; - ULONG AlignmentQUERY; - ULONG Flags; -} INFORMATION_CLASS_INFO, *PINFORMATION_CLASS_INFO; - -#define ICI_SQ_SAME(Type, Alignment, Flags) \ - { Type, Type, Alignment, Alignment, Flags } - -#define ICI_SQ(TypeQuery, TypeSet, AlignmentQuery, AlignmentSet, Flags) \ - { TypeQuery, TypeSet, AlignmentQuery, AlignmentSet, Flags } - -// -// TEMPORARY -// -#define IQS_SAME(Type, Alignment, Flags) \ - { sizeof(Type), sizeof(Type), sizeof(Alignment), sizeof(Alignment), Flags } - -#define IQS(TypeQuery, TypeSet, AlignmentQuery, AlignmentSet, Flags) \ - { sizeof(TypeQuery), sizeof(TypeSet), sizeof(AlignmentQuery), sizeof(AlignmentSet), Flags } - /* * Use IsPointerOffset to test whether a pointer should be interpreted as an offset * or as a pointer