2021-05-02 18:49:06 +00:00
|
|
|
/*
|
|
|
|
* 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
|
2022-06-11 11:19:51 +00:00
|
|
|
* COPYRIGHT: Copyright 2020-2022 George Bișoc <george.bisoc@reactos.org>
|
2021-05-02 18:49:06 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#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)
|
|
|
|
|
2022-06-11 11:19:51 +00:00
|
|
|
#define ICIF_PROBE_READ_WRITE 0x0
|
|
|
|
#define ICIF_PROBE_READ 0x1
|
|
|
|
#define ICIF_FORCE_RETURN_LENGTH_PROBE 0x2
|
|
|
|
|
2021-05-02 18:49:06 +00:00
|
|
|
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 }
|
|
|
|
|
2021-06-20 13:46:58 +00:00
|
|
|
#define IQS_NO_TYPE_LENGTH(Alignment, Flags) \
|
|
|
|
{ 0, sizeof(Alignment), 0, sizeof(Alignment), Flags }
|
|
|
|
|
2021-05-02 18:49:06 +00:00
|
|
|
#define IQS_NONE \
|
2021-06-06 17:39:32 +00:00
|
|
|
{ 0, sizeof(CHAR), 0, sizeof(CHAR), ICIF_NONE }
|