1 /* 2 * PROJECT: ReactOS Kernel 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: Internal header for information classes info interface 5 * COPYRIGHT: Copyright ??? 6 * Copyright 2020-2021 George Bișoc <george.bisoc@reactos.org> 7 */ 8 9 #pragma once 10 11 /* 12 * Implement generic information class probing code in a 13 * separate header within the NT kernel header internals. 14 * This makes it accessible to other sources by including 15 * the header. 16 */ 17 18 #define ICIF_NONE 0x0 19 #define ICIF_QUERY 0x1 20 #define ICIF_SET 0x2 21 #define ICIF_QUERY_SIZE_VARIABLE 0x4 22 #define ICIF_SET_SIZE_VARIABLE 0x8 23 #define ICIF_SIZE_VARIABLE (ICIF_QUERY_SIZE_VARIABLE | ICIF_SET_SIZE_VARIABLE) 24 25 typedef struct _INFORMATION_CLASS_INFO 26 { 27 USHORT RequiredSizeQUERY; 28 UCHAR AlignmentQUERY; 29 USHORT RequiredSizeSET; 30 UCHAR AlignmentSET; 31 USHORT Flags; 32 } INFORMATION_CLASS_INFO, *PINFORMATION_CLASS_INFO; 33 34 #define IQS_SAME(Type, Alignment, Flags) \ 35 { sizeof(Type), sizeof(Alignment), sizeof(Type), sizeof(Alignment), Flags } 36 37 #define IQS(TypeQuery, AlignmentQuery, TypeSet, AlignmentSet, Flags) \ 38 { sizeof(TypeQuery), sizeof(AlignmentQuery), sizeof(TypeSet), sizeof(AlignmentSet), Flags } 39 40 #define IQS_NO_TYPE_LENGTH(Alignment, Flags) \ 41 { 0, sizeof(Alignment), 0, sizeof(Alignment), Flags } 42 43 #define IQS_NONE \ 44 { 0, sizeof(CHAR), 0, sizeof(CHAR), ICIF_NONE } 45