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.

147 lines
2.9 KiB

  1. //+-----------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (c) Microsoft Corporation 1992 - 1996
  6. //
  7. // File: bndcache.h
  8. //
  9. // Contents: Prototypes and types for binding handle cache
  10. //
  11. //
  12. // History: 13-August-1996 Created MikeSw
  13. //
  14. //------------------------------------------------------------------------
  15. #ifndef __BNDCACHE_H__
  16. #define __BNDCACHE_H__
  17. //
  18. // All global variables declared as EXTERN will be allocated in the file
  19. // that defines TKTCACHE_ALLOCATE
  20. //
  21. #ifdef EXTERN
  22. #undef EXTERN
  23. #endif
  24. #ifdef BNDCACHE_ALLOCATE
  25. #define EXTERN
  26. #else
  27. #define EXTERN extern
  28. #endif
  29. #ifdef __cplusplus
  30. extern "C"
  31. {
  32. #endif // __cplusplus
  33. typedef struct _LSAP_LIST {
  34. LIST_ENTRY List;
  35. RTL_CRITICAL_SECTION Lock;
  36. } LSAP_LIST, *PLSAP_LIST;
  37. EXTERN BOOLEAN LsapBindingCacheInitialized;
  38. EXTERN LSAP_LIST LsapBindingCache;
  39. #define LsapLockList(_List_) RtlEnterCriticalSection(&(_List_)->Lock)
  40. #define LsapUnlockList(_List_) RtlLeaveCriticalSection(&(_List_)->Lock)
  41. typedef struct _LSAP_LIST_ENTRY {
  42. LIST_ENTRY Next;
  43. ULONG ReferenceCount;
  44. } LSAP_LIST_ENTRY, *PLSAP_LIST_ENTRY;
  45. typedef struct _LSAP_BINDING_CACHE_ENTRY {
  46. LSAP_LIST_ENTRY ListEntry;
  47. TimeStamp LastUsed;
  48. UNICODE_STRING RealmName;
  49. LPWSTR ServerName;
  50. LPWSTR ServerPrincipalName;
  51. PVOID ClientContext;
  52. LSA_HANDLE PolicyHandle;
  53. } LSAP_BINDING_CACHE_ENTRY, *PLSAP_BINDING_CACHE_ENTRY;
  54. VOID
  55. LsapDereferenceBindingCacheEntry(
  56. IN PLSAP_BINDING_CACHE_ENTRY BindingCacheEntry
  57. );
  58. VOID
  59. LsapReferenceBindingCacheEntry(
  60. IN PLSAP_BINDING_CACHE_ENTRY BindingCacheEntry,
  61. IN BOOLEAN RemoveFromList
  62. );
  63. NTSTATUS
  64. LsapInitBindingCache(
  65. VOID
  66. );
  67. PLSAP_BINDING_CACHE_ENTRY
  68. LsapLocateBindingCacheEntry(
  69. IN PUNICODE_STRING RealmName,
  70. IN BOOLEAN RemoveFromCache
  71. );
  72. VOID
  73. LsapFreeBindingCacheEntry(
  74. IN PLSAP_BINDING_CACHE_ENTRY BindingCacheEntry
  75. );
  76. NTSTATUS
  77. LsapCacheBinding(
  78. IN PUNICODE_STRING RealmName,
  79. IN PLSA_HANDLE Handle,
  80. IN OUT LPWSTR * ServerName,
  81. IN OUT LPWSTR * ServerPrincipalName,
  82. IN OUT PVOID * ClientContext,
  83. OUT PLSAP_BINDING_CACHE_ENTRY * NewCacheEntry
  84. );
  85. //
  86. // Functions for manipulating lsap lists
  87. //
  88. NTSTATUS
  89. LsapInitializeList(
  90. IN PLSAP_LIST List
  91. );
  92. VOID
  93. LsapFreeList(
  94. IN PLSAP_LIST List
  95. );
  96. VOID
  97. LsapInsertListEntry(
  98. IN PLSAP_LIST_ENTRY ListEntry,
  99. IN PLSAP_LIST List
  100. );
  101. VOID
  102. LsapReferenceListEntry(
  103. IN PLSAP_LIST List,
  104. IN PLSAP_LIST_ENTRY ListEntry,
  105. IN BOOLEAN RemoveFromList
  106. );
  107. BOOLEAN
  108. LsapDereferenceListEntry(
  109. IN PLSAP_LIST_ENTRY ListEntry,
  110. IN PLSAP_LIST List
  111. );
  112. VOID
  113. LsapInitializeListEntry(
  114. IN OUT PLSAP_LIST_ENTRY ListEntry
  115. );
  116. #ifdef __cplusplus
  117. }
  118. #endif // __cplusplus
  119. #endif // __TKTCACHE_H__