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.

171 lines
3.9 KiB

  1. /*++
  2. Copyright (c) 2001 Microsoft Corporation
  3. All rights reserved
  4. Module Name:
  5. lsalookup.cxx
  6. Abstract:
  7. This file provides useful accssors and mutators.
  8. Author:
  9. Larry Zhu (LZhu) 6-May-2001 Created.
  10. Environment:
  11. User Mode -Win32
  12. Revision History:
  13. --*/
  14. #include "precomp.hxx"
  15. #pragma hdrstop
  16. #include "lsalookup.hxx"
  17. TLSAP_LOOKUP_PACKAGE_ARGS::TLSAP_LOOKUP_PACKAGE_ARGS(void) : m_hr(E_FAIL)
  18. {
  19. }
  20. TLSAP_LOOKUP_PACKAGE_ARGS::TLSAP_LOOKUP_PACKAGE_ARGS(IN ULONG64 baseOffset)
  21. : m_baseOffset(baseOffset), m_hr(E_FAIL)
  22. {
  23. m_hr = Initialize();
  24. }
  25. TLSAP_LOOKUP_PACKAGE_ARGS::~TLSAP_LOOKUP_PACKAGE_ARGS(void)
  26. {
  27. }
  28. HRESULT TLSAP_LOOKUP_PACKAGE_ARGS::IsValid(void) const
  29. {
  30. return m_hr;
  31. }
  32. ULONG TLSAP_LOOKUP_PACKAGE_ARGS::GetAuthenticationPackage(void) const
  33. {
  34. ULONG AuthenticatonPackage = 0;
  35. ReadStructField(m_baseOffset, kstrLkpPkgArgs, "AuthenticationPackage", sizeof(AuthenticatonPackage), &AuthenticatonPackage);
  36. return AuthenticatonPackage;
  37. }
  38. ULONG TLSAP_LOOKUP_PACKAGE_ARGS::GetAuthenticationPackageDirect(void) const
  39. {
  40. ULONG AuthenticatonPackage = 0;
  41. if (!ReadMemory(m_baseOffset, &AuthenticatonPackage, sizeof(AuthenticatonPackage), NULL)) {
  42. DBG_LOG(LSA_ERROR, ("Unable to read AuthenticatonPackage for LSAP_LOOKUP_PACKAGE_ARGS at %#I64x\n", m_baseOffset));
  43. throw "LSAP_LOOKUP_PACKAGE_ARGS::GetAuthenticationPackageDirect failed";
  44. }
  45. return AuthenticatonPackage;
  46. }
  47. ULONG TLSAP_LOOKUP_PACKAGE_ARGS::GetPackageNameLengthDirect(void) const
  48. {
  49. ULONG PackageNameLength = 0;
  50. if (!ReadMemory(m_baseOffset + sizeof(ULONG), &PackageNameLength, sizeof(PackageNameLength), NULL)) {
  51. DBG_LOG(LSA_ERROR, ("Unable to read PackageNameLength for LSAP_LOOKUP_PACKAGE_ARGS at %#I64x\n", m_baseOffset));
  52. throw "LSAP_LOOKUP_PACKAGE_ARGS::GetPackageNameLengthDirect failed";
  53. }
  54. return PackageNameLength;
  55. }
  56. ULONG TLSAP_LOOKUP_PACKAGE_ARGS::GetPackageNameLength(void) const
  57. {
  58. ULONG PackageNameLength = 0;
  59. ReadStructField(m_baseOffset, kstrLkpPkgArgs, "PackageNameLength", sizeof(PackageNameLength), &PackageNameLength);
  60. return PackageNameLength;
  61. }
  62. PCSTR TLSAP_LOOKUP_PACKAGE_ARGS::GetPackageNameDirect(void) const
  63. {
  64. static ULONG fieldOffset = 2 * sizeof(ULONG);
  65. static CHAR szPackageName[LSAP_MAX_PACKAGE_NAME_LENGTH + 1] = {0};
  66. if (!ReadMemory(m_baseOffset + fieldOffset, szPackageName, GetPackageNameLengthDirect(), NULL)) {
  67. DBG_LOG(LSA_ERROR, ("Unable to read PackageName for LSAP_LOOKUP_PACKAGE_ARGS at %#I64x\n", m_baseOffset));
  68. throw "TLSAP_LOOKUP_PACKAGE_ARGS::GetPackageNameDirect failed";
  69. }
  70. return szPackageName;
  71. }
  72. PCSTR TLSAP_LOOKUP_PACKAGE_ARGS::GetPackageName(void) const
  73. {
  74. static ULONG fieldOffset = ReadFieldOffset(kstrLkpPkgArgs, "PackageName");
  75. static CHAR szPackageName[LSAP_MAX_PACKAGE_NAME_LENGTH + 1] = {0};
  76. if (!ReadMemory(m_baseOffset + fieldOffset, szPackageName, GetPackageNameLength(), NULL)) {
  77. throw "Read LookupPackageArgs PackageName failed";
  78. }
  79. return szPackageName;
  80. }
  81. ULONG64 TLSAP_LOOKUP_PACKAGE_ARGS::GetLookupPackageArgsBase(void) const
  82. {
  83. return m_baseOffset;
  84. }
  85. /******************************************************************************
  86. Private Methods
  87. ******************************************************************************/
  88. /*++
  89. Routine Name:
  90. Initialize
  91. Routine Description:
  92. Do necessary initialization.
  93. Arguments:
  94. None
  95. Return Value:
  96. An HRESULT
  97. --*/
  98. HRESULT TLSAP_LOOKUP_PACKAGE_ARGS::Initialize(void)
  99. {
  100. HRESULT hRetval = E_FAIL;
  101. hRetval = S_OK;
  102. return hRetval;
  103. }
  104. HRESULT TLSAP_LOOKUP_PACKAGE_ARGS::Initialize(IN ULONG64 baseOffset)
  105. {
  106. m_baseOffset = baseOffset;
  107. m_hr = Initialize();
  108. return m_hr;
  109. }