Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

154 lines
3.8 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1997.
  5. //
  6. // File: handle.hxx
  7. //
  8. // Contents: Handle Package interface
  9. //
  10. // Classes:
  11. //
  12. // Functions:
  13. //
  14. // History: 2-03-97 RichardW Created
  15. //
  16. //----------------------------------------------------------------------------
  17. #ifndef __HANDLE_HXX__
  18. #define __HANDLE_HXX__
  19. typedef
  20. VOID (WINAPI HP_ENUM_CALLBACK_FN)(
  21. PSecHandle Handle,
  22. PVOID Context,
  23. ULONG RefCount
  24. );
  25. typedef HP_ENUM_CALLBACK_FN * PHP_ENUM_CALLBACK_FN;
  26. typedef struct _SEC_HANDLE_ENTRY {
  27. LIST_ENTRY List ;
  28. SecHandle Handle ;
  29. PVOID Context ;
  30. ULONG HandleCount ;
  31. ULONG RefCount ;
  32. ULONG HandleIssuedCount ; // same as HandleCount, but doesn't go down.
  33. ULONG Flags ;
  34. } SEC_HANDLE_ENTRY, * PSEC_HANDLE_ENTRY ;
  35. #define SEC_HANDLE_FLAG_DELETE_PENDING 0x00000002
  36. #define SEC_HANDLE_FLAG_NO_CALLBACK 0x00000004
  37. typedef
  38. BOOL (WINAPI HP_INITIALIZE_FN)(
  39. VOID
  40. );
  41. typedef
  42. PVOID (WINAPI HP_CREATE_FN)(
  43. IN ULONG Flags,
  44. IN PVOID HandleTable OPTIONAL,
  45. IN PHP_ENUM_CALLBACK_FN Callback OPTIONAL
  46. );
  47. #define HANDLE_PACKAGE_NO_SERIALIZE 0x00000001
  48. #define HANDLE_PACKAGE_CALLBACK_ON_DELETE 0x00000002
  49. #define HANDLE_PACKAGE_REQUIRE_UNIQUE 0x00000004
  50. #define HANDLE_PACKAGE_MAX_FLAG 0x00000004
  51. #define HANDLE_PACKAGE_GENERAL_FLAGS 0x00000007
  52. typedef
  53. BOOL (WINAPI HP_DELETE_FN)(
  54. PVOID HandleTable,
  55. PHP_ENUM_CALLBACK_FN Callback
  56. );
  57. typedef
  58. BOOL (WINAPI HP_ADD_HANDLE_FN)(
  59. PVOID HandleTable,
  60. PSecHandle Handle,
  61. PVOID Context,
  62. ULONG Flags
  63. );
  64. typedef
  65. BOOL (WINAPI HP_DELETE_HANDLE_FN)(
  66. PVOID HandleTable,
  67. PSecHandle Handle,
  68. ULONG Options
  69. );
  70. #define DELHANDLE_FORCE 0x00000001
  71. #define DELHANDLE_NO_CALLBACK 0x00000002
  72. typedef
  73. BOOL (WINAPI HP_VALIDATE_HANDLE_FN)(
  74. PVOID HandleTable,
  75. PSecHandle Handle,
  76. BOOL Deref
  77. );
  78. typedef
  79. PVOID (WINAPI HP_REF_HANDLE_FN)(
  80. PVOID HandleTable,
  81. PSecHandle Handle
  82. );
  83. typedef
  84. VOID (WINAPI HP_DEREF_HANDLE_KEY_FN)(
  85. PVOID HandleTable,
  86. PVOID HandleKey
  87. );
  88. typedef
  89. PVOID (WINAPI HP_GET_HANDLE_CONTEXT_FN)(
  90. PVOID HandleTable,
  91. PSecHandle Handle
  92. );
  93. typedef
  94. BOOL (WINAPI HP_RELEASE_CONTEXT_FN)(
  95. PVOID HandleTable,
  96. PSecHandle Handle
  97. );
  98. typedef HP_INITIALIZE_FN * PHP_INITIALIZE_FN;
  99. typedef HP_CREATE_FN * PHP_CREATE_FN ;
  100. typedef HP_DELETE_FN * PHP_DELETE_FN ;
  101. typedef HP_ADD_HANDLE_FN * PHP_ADD_HANDLE_FN ;
  102. typedef HP_DELETE_HANDLE_FN * PHP_DELETE_HANDLE_FN ;
  103. typedef HP_VALIDATE_HANDLE_FN * PHP_VALIDATE_HANDLE_FN ;
  104. typedef HP_REF_HANDLE_FN * PHP_REF_HANDLE_FN ;
  105. typedef HP_DEREF_HANDLE_KEY_FN * PHP_DEREF_HANDLE_KEY_FN ;
  106. typedef HP_GET_HANDLE_CONTEXT_FN * PHP_GET_HANDLE_CONTEXT_FN ;
  107. typedef HP_RELEASE_CONTEXT_FN * PHP_RELEASE_CONTEXT_FN ;
  108. typedef struct _HANDLE_PACKAGE {
  109. ULONG TableSize ;
  110. PHP_INITIALIZE_FN Initialize ;
  111. PHP_CREATE_FN Create ;
  112. PHP_DELETE_FN Delete ;
  113. PHP_ADD_HANDLE_FN AddHandle ;
  114. PHP_DELETE_HANDLE_FN DeleteHandle ;
  115. PHP_VALIDATE_HANDLE_FN ValidateHandle ;
  116. PHP_REF_HANDLE_FN RefHandle ;
  117. PHP_DEREF_HANDLE_KEY_FN DerefHandleKey ;
  118. PHP_GET_HANDLE_CONTEXT_FN GetHandleContext ;
  119. PHP_RELEASE_CONTEXT_FN ReleaseContext ;
  120. } HANDLE_PACKAGE, * PHANDLE_PACKAGE ;
  121. PVOID
  122. LhtConvertSmallToLarge(
  123. PVOID Small
  124. );
  125. extern HANDLE_PACKAGE LargeHandlePackage ;
  126. extern HANDLE_PACKAGE SmallHandlePackage ;
  127. #endif // __HANDLE_HXX__