apiset.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. #ifndef _API_SET_H_
  6. #define _API_SET_H_
  7. #include <_mingw.h>
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #define API_SET_PREFIX_NAME_A "API-"
  12. #define API_SET_PREFIX_NAME_U L"API-"
  13. #define API_SET_EXTENSION_NAME_A "EXT-"
  14. #define API_SET_EXTENSION_NAME_U L"EXT-"
  15. #define API_SET_SCHEMA_NAME ApiSetSchema
  16. #define API_SET_SECTION_NAME ".apiset"
  17. #define API_SET_SCHEMA_SUFFIX L".sys"
  18. #define API_SET_SCHEMA_VERSION __MSABI_LONG(2U)
  19. #define API_SET_HELPER_NAME ApiSetHelp
  20. #define API_SET_LOAD_SCHEMA_ORDINAL 1
  21. #define API_SET_LOOKUP_ORDINAL 2
  22. #define API_SET_RELEASE_SCHEMA_ORDINAL 3
  23. #define API_SET_STRING_X(s) #s
  24. #define API_SET_STRING(s) API_SET_STRING_X(s)
  25. #define API_SET_STRING_U_Y(s) L ## s
  26. #define API_SET_STRING_U_X(s) API_SET_STRING_U_Y(s)
  27. #define API_SET_STRING_U(s) API_SET_STRING_U_X(API_SET_STRING(s))
  28. #define API_SET_OVERRIDE(X) X##Implementation
  29. #define API_SET_LEGACY_OVERRIDE_DEF(X) X = API_SET_OVERRIDE(X)
  30. #define API_SET_OVERRIDE_DEF(X) API_SET_LEGACY_OVERRIDE_DEF(X) PRIVATE
  31. #define API_SET_PRIVATE(X) X PRIVATE
  32. #undef API_SET
  33. #undef API_SET_LIBRARY
  34. #ifdef _API_SET_HOST
  35. #define API_SET(X) X PRIVATE
  36. #define API_SET_LIBRARY(X)
  37. #else
  38. #define API_SET_LIBRARY(X) LIBRARY X
  39. #ifndef _API_SET_LEGACY_TARGET
  40. #define API_SET(X) X
  41. #else
  42. #define API_SET(X) X = _API_SET_LEGACY_TARGET##.##X
  43. #undef API_SET_PRIVATE
  44. #define API_SET_PRIVATE(X) X = _API_SET_LEGACY_TARGET##.##X PRIVATE
  45. #endif
  46. #endif
  47. #ifdef _NTDEF_
  48. typedef struct _API_SET_VALUE_ENTRY {
  49. ULONG NameOffset;
  50. ULONG NameLength;
  51. ULONG ValueOffset;
  52. ULONG ValueLength;
  53. } API_SET_VALUE_ENTRY, *PAPI_SET_VALUE_ENTRY;
  54. typedef const API_SET_VALUE_ENTRY *PCAPI_SET_VALUE_ENTRY;
  55. typedef struct _API_SET_VALUE_ARRAY {
  56. ULONG Count;
  57. API_SET_VALUE_ENTRY Array[1];
  58. } API_SET_VALUE_ARRAY,*PAPI_SET_VALUE_ARRAY;
  59. typedef const API_SET_VALUE_ARRAY *PCAPI_SET_VALUE_ARRAY;
  60. typedef struct _API_SET_NAMESPACE_ENTRY {
  61. ULONG NameOffset;
  62. ULONG NameLength;
  63. ULONG DataOffset;
  64. } API_SET_NAMESPACE_ENTRY, *PAPI_SET_NAMESPACE_ENTRY;
  65. typedef const API_SET_NAMESPACE_ENTRY *PCAPI_SET_NAMESPACE_ENTRY;
  66. typedef struct _API_SET_NAMESPACE_ARRAY {
  67. ULONG Version;
  68. ULONG Count;
  69. API_SET_NAMESPACE_ENTRY Array[1];
  70. } API_SET_NAMESPACE_ARRAY, *PAPI_SET_NAMESPACE_ARRAY;
  71. typedef const API_SET_NAMESPACE_ARRAY *PCAPI_SET_NAMESPACE_ARRAY;
  72. typedef NTSTATUS (NTAPI *PAPI_SET_LOAD_SCHEMA_RTN)(PCSTR, PCAPI_SET_NAMESPACE_ARRAY *, PVOID *);
  73. typedef NTSTATUS (NTAPI *PAPI_SET_LOOKUP_HELPER_RTN)(PCAPI_SET_NAMESPACE_ARRAY, PCSTR, PCSTR, PBOOLEAN, PSTR, ULONG);
  74. typedef NTSTATUS (NTAPI *PAPI_SET_RELEASE_SCHEMA_RTN)(PVOID);
  75. NTSTATUS NTAPI ApiSetResolveToHost(PCAPI_SET_NAMESPACE_ARRAY ApiSetSchema, PCUNICODE_STRING FileNameIn, PCUNICODE_STRING ParentName, PBOOLEAN Resolved, PUNICODE_STRING HostBinary);
  76. #endif
  77. #ifdef __cplusplus
  78. }
  79. #endif
  80. #endif /* _API_SET_H_ */