1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 6 #ifndef _API_SET_H_ 7 #define _API_SET_H_ 8 9 #include <_mingw.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #define API_SET_PREFIX_NAME_A "API-" 16 #define API_SET_PREFIX_NAME_U L"API-" 17 18 #define API_SET_EXTENSION_NAME_A "EXT-" 19 #define API_SET_EXTENSION_NAME_U L"EXT-" 20 21 #define API_SET_SCHEMA_NAME ApiSetSchema 22 #define API_SET_SECTION_NAME ".apiset" 23 #define API_SET_SCHEMA_SUFFIX L".sys" 24 25 #define API_SET_SCHEMA_VERSION __MSABI_LONG(2U) 26 27 #define API_SET_HELPER_NAME ApiSetHelp 28 29 #define API_SET_LOAD_SCHEMA_ORDINAL 1 30 #define API_SET_LOOKUP_ORDINAL 2 31 #define API_SET_RELEASE_SCHEMA_ORDINAL 3 32 33 #define API_SET_STRING_X(s) #s 34 #define API_SET_STRING(s) API_SET_STRING_X(s) 35 #define API_SET_STRING_U_Y(s) L ## s 36 #define API_SET_STRING_U_X(s) API_SET_STRING_U_Y(s) 37 #define API_SET_STRING_U(s) API_SET_STRING_U_X(API_SET_STRING(s)) 38 39 #define API_SET_OVERRIDE(X) X##Implementation 40 #define API_SET_LEGACY_OVERRIDE_DEF(X) X = API_SET_OVERRIDE(X) 41 #define API_SET_OVERRIDE_DEF(X) API_SET_LEGACY_OVERRIDE_DEF(X) PRIVATE 42 43 #define API_SET_PRIVATE(X) X PRIVATE 44 45 #undef API_SET 46 #undef API_SET_LIBRARY 47 48 #ifdef _API_SET_HOST 49 #define API_SET(X) X PRIVATE 50 #define API_SET_LIBRARY(X) 51 #else 52 #define API_SET_LIBRARY(X) LIBRARY X 53 #ifndef _API_SET_LEGACY_TARGET 54 #define API_SET(X) X 55 #else 56 #define API_SET(X) X = _API_SET_LEGACY_TARGET##.##X 57 #undef API_SET_PRIVATE 58 #define API_SET_PRIVATE(X) X = _API_SET_LEGACY_TARGET##.##X PRIVATE 59 #endif 60 61 #endif 62 63 #ifdef _NTDEF_ 64 typedef struct _API_SET_VALUE_ENTRY { 65 ULONG NameOffset; 66 ULONG NameLength; 67 ULONG ValueOffset; 68 ULONG ValueLength; 69 } API_SET_VALUE_ENTRY, *PAPI_SET_VALUE_ENTRY; 70 71 typedef const API_SET_VALUE_ENTRY *PCAPI_SET_VALUE_ENTRY; 72 73 typedef struct _API_SET_VALUE_ARRAY { 74 ULONG Count; 75 API_SET_VALUE_ENTRY Array[1]; 76 } API_SET_VALUE_ARRAY,*PAPI_SET_VALUE_ARRAY; 77 78 typedef const API_SET_VALUE_ARRAY *PCAPI_SET_VALUE_ARRAY; 79 80 typedef struct _API_SET_NAMESPACE_ENTRY { 81 ULONG NameOffset; 82 ULONG NameLength; 83 ULONG DataOffset; 84 } API_SET_NAMESPACE_ENTRY, *PAPI_SET_NAMESPACE_ENTRY; 85 86 typedef const API_SET_NAMESPACE_ENTRY *PCAPI_SET_NAMESPACE_ENTRY; 87 88 typedef struct _API_SET_NAMESPACE_ARRAY { 89 ULONG Version; 90 ULONG Count; 91 API_SET_NAMESPACE_ENTRY Array[1]; 92 } API_SET_NAMESPACE_ARRAY, *PAPI_SET_NAMESPACE_ARRAY; 93 94 typedef const API_SET_NAMESPACE_ARRAY *PCAPI_SET_NAMESPACE_ARRAY; 95 96 typedef NTSTATUS (NTAPI *PAPI_SET_LOAD_SCHEMA_RTN)(PCSTR, PCAPI_SET_NAMESPACE_ARRAY *, PVOID *); 97 typedef NTSTATUS (NTAPI *PAPI_SET_LOOKUP_HELPER_RTN)(PCAPI_SET_NAMESPACE_ARRAY, PCSTR, PCSTR, PBOOLEAN, PSTR, ULONG); 98 typedef NTSTATUS (NTAPI *PAPI_SET_RELEASE_SCHEMA_RTN)(PVOID); 99 100 NTSTATUS NTAPI ApiSetResolveToHost(PCAPI_SET_NAMESPACE_ARRAY ApiSetSchema, PCUNICODE_STRING FileNameIn, PCUNICODE_STRING ParentName, PBOOLEAN Resolved, PUNICODE_STRING HostBinary); 101 102 #endif 103 104 #ifdef __cplusplus 105 } 106 #endif 107 108 #endif /* _API_SET_H_ */ 109