xref: /reactos/sdk/include/reactos/subsys/sm/smrosdbg.h (revision 0e14378d)
1 /*
2  * PROJECT:     ReactOS SM Helper Library
3  * LICENSE:     GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4  * PURPOSE:     ReactOS-specific SM Debug Utility Function:
5  *              Querying subsystem information.
6  * COPYRIGHT:   Copyright 2005 Emanuele Aliberti <ea@reactos.com>
7  *              Copyright 2022 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
8  */
9 
10 #ifndef _SMROSDBG_H_
11 #define _SMROSDBG_H_
12 
13 #pragma once
14 
15 /* Note: this is not in NT */
16 /* Ask SM to send back some data */
17 #define SM_API_QUERY_INFORMATION    SmpMaxApiNumber
18 
19 #define SM_QRYINFO_MAX_SS_COUNT     8
20 #define SM_QRYINFO_MAX_ROOT_NODE    30
21 
22 typedef enum {
23     SmBasicInformation = 0,
24     SmSubSystemInformation
25 } SM_INFORMATION_CLASS;
26 
27 typedef struct _SM_BASIC_INFORMATION
28 {
29     USHORT SubSystemCount;
30     USHORT Unused;
31     struct
32     {
33         USHORT Id;
34         USHORT Flags;
35         ULONG ProcessId;
36     } SubSystem[SM_QRYINFO_MAX_SS_COUNT];
37 } SM_BASIC_INFORMATION, *PSM_BASIC_INFORMATION;
38 
39 typedef struct _SM_SUBSYSTEM_INFORMATION
40 {
41     USHORT SubSystemId;
42     USHORT Flags;
43     ULONG ProcessId;
44     WCHAR NameSpaceRootNode[SM_QRYINFO_MAX_ROOT_NODE];
45 } SM_SUBSYSTEM_INFORMATION, *PSM_SUBSYSTEM_INFORMATION;
46 
47 typedef struct _SM_QUERYINFO_MSG
48 {
49     SM_INFORMATION_CLASS SmInformationClass;
50     ULONG DataLength;
51     union
52     {
53         SM_BASIC_INFORMATION BasicInformation;
54         SM_SUBSYSTEM_INFORMATION SubSystemInformation;
55     };
56 } SM_QUERYINFO_MSG, *PSM_QUERYINFO_MSG;
57 
58 #endif // _SMROSDBG_H_
59