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.
 
 
 
 
 
 

139 lines
3.7 KiB

#include "ulib.hxx"
#include "drive.hxx"
#include "untfs.hxx"
#include "recordpg.hxx"
extern "C" {
#include <stdio.h>
}
BOOLEAN
RECORD_PAGE_EDIT::Initialize(
IN HWND WindowHandle,
IN INT ClientHeight,
IN INT ClientWidth,
IN PLOG_IO_DP_DRIVE Drive
)
{
TEXTMETRIC tm;
HDC hdc;
hdc = GetDC(WindowHandle);
if (hdc == NULL)
return FALSE;
GetTextMetrics(hdc, &tm);
ReleaseDC(WindowHandle, hdc);
if (!VERTICAL_TEXT_SCROLL::Initialize(
WindowHandle,
0,
ClientHeight,
ClientWidth,
tm.tmExternalLeading + tm.tmHeight,
tm.tmMaxCharWidth
)) {
return FALSE;
}
return TRUE;
}
VOID
RECORD_PAGE_EDIT::SetBuf(
IN HWND WindowHandle,
IN OUT PVOID Buffer,
IN ULONG Size
)
{
_buffer = Buffer;
_size = Size;
SetRange(WindowHandle, _size/2);
InvalidateRect(WindowHandle, NULL, TRUE);
}
VOID
RECORD_PAGE_EDIT::Paint(
IN HDC DeviceContext,
IN RECT InvalidRect,
IN HWND WindowHandle
)
{
PLFS_RECORD_PAGE_HEADER pRecordPageHeader;
TEXTMETRIC tm;
INT ch, CurrentLine;
TCHAR buf[1024];
SetScrollRange(WindowHandle, SB_VERT, 0, _size/2, FALSE);
SetScrollPos(WindowHandle, SB_VERT, QueryScrollPosition(), TRUE);
if (!_buffer || _size < 512) {
return;
}
GetTextMetrics(DeviceContext, &tm);
ch = tm.tmExternalLeading + tm.tmHeight;
CurrentLine = 0;
pRecordPageHeader = (PLFS_RECORD_PAGE_HEADER)_buffer;
swprintf(buf, TEXT("MultiSectorHeader.Signature: %c%c%c%c"),
pRecordPageHeader->MultiSectorHeader.Signature[0],
pRecordPageHeader->MultiSectorHeader.Signature[1],
pRecordPageHeader->MultiSectorHeader.Signature[2],
pRecordPageHeader->MultiSectorHeader.Signature[3]);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("MultiSectorHeader.UpdateSequenceArrayOffset: %ul"),
pRecordPageHeader->MultiSectorHeader.UpdateSequenceArrayOffset);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("MultiSectorHeader.UpdateSequenceArraySize: %x"),
pRecordPageHeader->MultiSectorHeader.UpdateSequenceArraySize);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("Copy.LastLsn: %x:%x"),
pRecordPageHeader->Copy.LastLsn.HighPart,
pRecordPageHeader->Copy.LastLsn.LowPart);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("Copy.FileOffset: %x"), pRecordPageHeader->Copy.FileOffset);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("Flags: %x"), pRecordPageHeader->Flags);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("PageCount: %x"), pRecordPageHeader->PageCount);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("PagePosition: %x"), pRecordPageHeader->PagePosition);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("Header.Packed.NextRecordOffset: %x"),
pRecordPageHeader->Header.Packed.NextRecordOffset);
WriteLine(DeviceContext, CurrentLine++, buf);
swprintf(buf, TEXT("Header.Packed.LastEndLsn: %x:%x"),
pRecordPageHeader->Header.Packed.LastEndLsn.HighPart,
pRecordPageHeader->Header.Packed.LastEndLsn.LowPart);
WriteLine(DeviceContext, CurrentLine++, buf);
// then Header.Packed.UpdateSequenceArray
}
VOID
RECORD_PAGE_EDIT::KeyUp(
IN HWND WindowHandle
)
{
ScrollUp(WindowHandle);
}
VOID
RECORD_PAGE_EDIT::KeyDown(
IN HWND WindowHandle
)
{
ScrollDown(WindowHandle);
}