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.

130 lines
2.0 KiB

  1. /*++
  2. Copyright (c) 2001 Microsoft Corporation
  3. All rights reserved
  4. Module Name:
  5. lsasht.cxx
  6. Abstract:
  7. This file provides useful accssors and mutators.
  8. Author:
  9. Larry Zhu (LZhu) May 1, 2001 Created
  10. Environment:
  11. User Mode -Win32
  12. Revision History:
  13. --*/
  14. #include "precomp.hxx"
  15. #pragma hdrstop
  16. #include "lsasht.hxx"
  17. #include <stdio.h>
  18. #include <string.h>
  19. TSHT::TSHT(void) : m_hr(E_FAIL)
  20. {
  21. }
  22. TSHT::TSHT(IN ULONG64 baseOffset)
  23. : m_baseOffset(baseOffset), m_hr(E_FAIL)
  24. {
  25. m_hr = Initialize();
  26. }
  27. TSHT::~TSHT(void)
  28. {
  29. }
  30. HRESULT TSHT::IsValid(void) const
  31. {
  32. return m_hr;
  33. }
  34. ULONG TSHT::GetFlags(void) const
  35. {
  36. ULONG Flags = 0;
  37. ReadStructField(m_baseOffset, kstrSHT, "Flags", sizeof(Flags), &Flags);
  38. return Flags;
  39. }
  40. ULONG TSHT::GetCount(void) const
  41. {
  42. ULONG Count = 0;
  43. ReadStructField(m_baseOffset, kstrSHT, "Count", sizeof(Count), &Count);
  44. return Count;
  45. }
  46. ULONG64 TSHT::GetPendingHandle(void) const
  47. {
  48. return ReadStructPtrField(m_baseOffset, kstrSHT, "PendingHandle");
  49. }
  50. ULONG64 TSHT::GetListFlink(void) const
  51. {
  52. return ReadStructPtrField(m_baseOffset, kstrSHT, kstrListFlink);
  53. }
  54. ULONG64 TSHT::GetHandleListAnchor(void) const
  55. {
  56. return m_baseOffset + ReadFieldOffset(kstrSHT, "List");
  57. }
  58. ULONG64 TSHT::GetDeleteCallback(void) const
  59. {
  60. return ReadStructPtrField(m_baseOffset, kstrLHT, "DeleteCallback");
  61. }
  62. /******************************************************************************
  63. Private Methods
  64. ******************************************************************************/
  65. /*++
  66. Routine Name:
  67. Initialize
  68. Routine Description:
  69. Do necessary initialization.
  70. Arguments:
  71. None
  72. Return Value:
  73. An HRESULT
  74. --*/
  75. HRESULT TSHT::Initialize(void)
  76. {
  77. HRESULT hRetval = E_FAIL;
  78. hRetval = S_OK;
  79. return hRetval;
  80. }
  81. HRESULT TSHT::Initialize(IN ULONG64 baseOffset)
  82. {
  83. m_baseOffset = baseOffset;
  84. m_hr = Initialize();
  85. return m_hr;
  86. }