xref: /reactos/sdk/include/ddk/aux_klib.h (revision 74ec94e1)
1 /*
2  * aux_klib.h
3  *
4  * Auxiliary Kernel-Mode Library
5  *
6  * Contributors:
7  *   Victor Perevertkin <victor.perevertkin@reactos.org>
8  *
9  * THIS SOFTWARE IS NOT COPYRIGHTED
10  *
11  * This source code is offered for use in the public domain. You may
12  * use, modify or distribute it freely.
13  *
14  * This code is distributed in the hope that it will be useful but
15  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16  * DISCLAIMED. This includes but is not limited to warranties of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18  *
19  */
20 
21 #pragma once
22 
23 #ifndef PIMAGE_EXPORT_DIRECTORY
24 #include <ntimage.h>
25 #endif
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #define AUX_KLIB_MODULE_PATH_LEN 0x100
32 
33 typedef struct _AUX_MODULE_BASIC_INFO {
34     PVOID ImageBase;
35 } AUX_MODULE_BASIC_INFO, *PAUX_MODULE_BASIC_INFO;
36 
37 typedef struct _AUX_MODULE_EXTENDED_INFO {
38     AUX_MODULE_BASIC_INFO BasicInfo;
39     ULONG ImageSize;
40     USHORT FileNameOffset;
41     CHAR FullPathName[AUX_KLIB_MODULE_PATH_LEN];
42 } AUX_MODULE_EXTENDED_INFO, *PAUX_MODULE_EXTENDED_INFO;
43 
44 typedef struct _KBUGCHECK_DATA {
45     ULONG BugCheckDataSize;
46     ULONG BugCheckCode;
47     ULONG_PTR Parameter1;
48     ULONG_PTR Parameter2;
49     ULONG_PTR Parameter3;
50     ULONG_PTR Parameter4;
51 } KBUGCHECK_DATA, *PKBUGCHECK_DATA;
52 
53 NTSTATUS
54 NTAPI
55 AuxKlibInitialize(VOID);
56 
57 _IRQL_requires_max_(PASSIVE_LEVEL)
58 NTSTATUS
59 NTAPI
60 AuxKlibQueryModuleInformation(
61     _Inout_ PULONG InformationLength,
62     _In_ ULONG SizePerModule,
63     _Out_writes_bytes_opt_(*InformationLength) PAUX_MODULE_EXTENDED_INFO ModuleInfo);
64 
65 NTSTATUS
66 AuxKlibGetBugCheckData(
67     _Inout_ PKBUGCHECK_DATA BugCheckData);
68 
69 PIMAGE_EXPORT_DIRECTORY
70 AuxKlibGetImageExportDirectory(
71     _In_ PVOID ImageBase);
72 
73 _IRQL_requires_max_(PASSIVE_LEVEL)
74 NTSTATUS
75 NTAPI
76 AuxKlibEnumerateSystemFirmwareTables (
77     _In_ ULONG FirmwareTableProviderSignature,
78     _Out_writes_bytes_to_opt_(BufferLength, *ReturnLength) PVOID FirmwareTableBuffer,
79     _In_ ULONG BufferLength,
80     _Out_opt_ PULONG ReturnLength);
81 
82 _IRQL_requires_max_(PASSIVE_LEVEL)
83 NTSTATUS
84 NTAPI
85 AuxKlibGetSystemFirmwareTable (
86     _In_ ULONG FirmwareTableProviderSignature,
87     _In_ ULONG FirmwareTableID,
88     _Out_writes_bytes_to_opt_(BufferLength, *ReturnLength) PVOID FirmwareTableBuffer,
89     _In_ ULONG BufferLength,
90     _Out_opt_ PULONG ReturnLength);
91 
92 #ifdef __cplusplus
93 }
94 #endif
95