|
|
/*++
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 <stdio.h>
#include <string.h>
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; }
|