/*++ Copyright (c) 2001 Microsoft Corporation All rights reserved Module Name: lsalht.cxx Abstract: This file provides useful accssors and mutators. Author: Larry Zhu (LZhu) May 1, 2001 Created Environment: User Mode -Win32 Revision History: --*/ #include "precomp.hxx" #pragma hdrstop #include "lsalht.hxx" #include #include TLHT::TLHT(void) : m_hr(E_FAIL) { } TLHT::TLHT(IN ULONG64 baseOffset) : m_baseOffset(baseOffset), m_hr(E_FAIL) { m_hr = Initialize(); } TLHT::~TLHT(void) { } HRESULT TLHT::IsValid(void) const { return m_hr; } ULONG TLHT::GetFlags(void) const { ULONG Flags = 0; ReadStructField(m_baseOffset, kstrLHT, "Flags", sizeof(Flags), &Flags); return Flags; } ULONG TLHT::GetCount(void) const { ULONG Count = 0; ReadStructField(m_baseOffset, kstrLHT, "Count", sizeof(Count), &Count); return Count; } ULONG TLHT::GetListsFlags(IN ULONG index) const { CHAR szTmp[64] = {0}; ULONG Flags = 0; _snprintf(szTmp, sizeof(szTmp) - 1, "Lists[%#x].Flags", index); DBG_LOG(LSA_LOG, ("Reading %s from %s %#I64x\n", szTmp, kstrLHT, m_baseOffset)); ReadStructField(m_baseOffset, kstrLHT, szTmp, sizeof(Flags), &Flags); return Flags; } ULONG64 TLHT::GetPendingHandle(void) const { return ReadStructPtrField(m_baseOffset, kstrLHT, "PendingHandle"); } ULONG64 TLHT::GetListsFlink(IN ULONG index) const { CHAR szTmp[64] = {0}; _snprintf(szTmp, sizeof(szTmp) - 1, "Lists[%#x].List.Flink", index); DBG_LOG(LSA_LOG, ("Reading %s from %s %#I64x\n", szTmp, kstrLHT, m_baseOffset)); return ReadStructPtrField(m_baseOffset, kstrLHT, szTmp); } ULONG64 TLHT::GetAddrLists(IN ULONG index) const { CHAR szTmp[64] = {0}; ULONG fieldOffset = 0; _snprintf(szTmp, sizeof(szTmp) - 1, "Lists[%#x]", index); DBG_LOG(LSA_LOG, ("Reading offset %s from %s %#I64x\n", szTmp, kstrLHT, m_baseOffset)); fieldOffset = ReadFieldOffset(kstrLHT, szTmp); return m_baseOffset + fieldOffset; } ULONG64 TLHT::GetDeleteCallback(void) const { return ReadStructPtrField(m_baseOffset, kstrLHT, "DeleteCallback"); } ULONG TLHT::GetDepth(void) const { ULONG Depth = 0; ReadStructField(m_baseOffset, kstrLHT, "Depth", sizeof(Depth), &Depth); return Depth; } ULONG64 TLHT::GetParent(void) const { return ReadStructPtrField(m_baseOffset, kstrLHT, "Parent"); } /****************************************************************************** Private Methods ******************************************************************************/ /*++ Routine Name: Initialize Routine Description: Do necessary initialization. Arguments: None Return Value: An HRESULT --*/ HRESULT TLHT::Initialize(void) { HRESULT hRetval = E_FAIL; hRetval = S_OK; return hRetval; } HRESULT TLHT::Initialize(IN ULONG64 baseOffset) { m_baseOffset = baseOffset; m_hr = Initialize(); return m_hr; }