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