Home | History | Annotate | Download | only in include
      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