📄 proto.h
字号:
//
// Permedia3 Sample Display Driver
// proto.h
//
// Copyright (c) 2000 Microsoft Corporation. All rights reserved.
//
// This header includes prototypes for all of the functions exported from
// the various source modules in the driver, with the exception of the debug
// functions, which are actually macros, and defined in debug.h.
#pragma once
// init.c
extern BOOL
InitializeHardware();
// enable.c
extern BOOL
DrvEnableDriver(
ULONG EngineVersion,
ULONG SizeofDrvEnableData,
DRVENABLEDATA * DrvEnableData,
PENGCALLBACKS EngineCallbacks
);
extern ULONG
DrvGetModes(
HANDLE DriverHandle,
ULONG SizeofDevMode,
DEVMODEW * DevMode
);
extern HSURF
DrvEnableSurface(
DHPDEV DeviceHandle
);
extern BOOL
DrvContrastControl(
DHPDEV DeviceHandle,
ULONG Command,
ULONG * Value
);
extern void
DrvPowerHandler(
DHPDEV DeviceHandle,
BOOL PowerOff
);
extern ULONG
DrvEscape(
DHPDEV DeviceHandle,
SURFOBJ * Surface,
ULONG Escape,
ULONG InBufferSize,
PVOID InBuffer,
ULONG OutBufferSize,
PVOID OutBuffer
);
extern ULONG
DrvRealizeColor(
USHORT DestinationType,
ULONG NumPalette,
ULONG * Palette,
ULONG Color
);
extern ULONG
DrvUnrealizeColor(
USHORT SourceType,
ULONG NumPalette,
ULONG * Palette,
ULONG RealizedColor
);
// engine.c
extern BOOL
InitializeEngineManager(
ULONG EngineVersion,
PENGCALLBACKS EngineCallbacks
);
extern ULONG
GetEngineVersion();
// register.c
extern BOOL
InitializeRegisters();
extern void
WriteRegByte(
ULONG Offset,
BYTE Value
);
extern void
WriteMaskedRegByte(
ULONG Offset,
BYTE Mask,
BYTE Value
);
extern BYTE
ReadRegByte(
ULONG Offset
);
extern BYTE
ReadMaskedRegByte(
ULONG Offset,
BYTE Mask
);
extern void
WriteRegUlong(
ULONG Offset,
ULONG Value
);
extern void
WriteMaskedRegUlong(
ULONG Offset,
ULONG Mask,
ULONG Value
);
extern ULONG
ReadRegUlong(
ULONG Offset
);
extern ULONG
ReadMaskedRegUlong(
ULONG Offset,
ULONG Mask
);
extern void
WriteRdReg(
ULONG Index,
BYTE Value
);
extern void
WriteMaskedRdReg(
ULONG Index,
BYTE Mask,
BYTE Value
);
extern BYTE
ReadRdReg(
ULONG Index
);
extern BYTE
ReadMaskedRdReg(
ULONG Index,
BYTE Mask
);
extern void
WriteVgaReg(
ULONG Index,
BYTE Value
);
extern void
WriteMaskedVgaReg(
ULONG Index,
BYTE Mask,
BYTE Value
);
extern BYTE
ReadVgaReg(
ULONG Index
);
extern BYTE
ReadMaskedVgaReg(
ULONG Index,
BYTE Mask
);
extern void
WaitForInputFIFO(
ULONG Writes
);
// mode.c
extern BOOL
InitializeModes();
extern ULONG
GetCurrentMode();
extern ULONG
GetDisplayModeCount();
extern ULONG
GetDisplayModeWidth(
ULONG ModeNumber
);
extern ULONG
GetDisplayModeHeight(
ULONG ModeNumber
);
extern ULONG
GetDisplayModeBPP(
ULONG ModeNumber
);
extern ULONG
GetDisplayModeStride(
ULONG ModeNumber
);
extern void
GetDisplayModeMasks(
ULONG ModeNumber,
ULONG * RedMask,
ULONG * GreenMask,
ULONG * BlueMask,
ULONG * AlphaMask
);
extern const PERM3_FORMAT *
GetDisplayModeFormat(
ULONG ModeNumber
);
extern ULONG
GetDisplayModeFrequency(
ULONG ModeNumber
);
extern PERM3_SURFACE *
GetPrimarySurface();
extern void
SetMode(
ULONG ModeNumber
);
extern void
SetScreenBase(
LPVOID NewPrimary
);
// memory.c
extern BOOL
InitializeSystemMem();
extern LPVOID
SystemAlloc(
ULONG Bytes
);
extern LPVOID
SystemReAlloc(
LPVOID Pointer,
ULONG Bytes
);
extern void
SystemFree(
LPVOID Pointer
);
extern BOOL
InitializeVideoMem();
extern LPVOID
VideoAlloc(
ULONG Bytes,
ULONG Alignment
);
extern void
VideoFree(
LPVOID Pointer
);
extern ULONG
GetTotalVideoMem();
extern ULONG
GetFreeVideoMem();
extern ULONG
VirtualToOffset(
LPVOID Pointer
);
// lut.c
extern void
GetGammaRamp(
BYTE * RedRamp,
BYTE * GreenRamp,
BYTE * BlueRamp
);
extern void
SetGammaRamp(
BYTE * RedRamp,
BYTE * GreenRamp,
BYTE * BlueRamp
);
// cursor.c
extern ULONG
DrvSetPointerShape(
SURFOBJ * Surface,
SURFOBJ * AndXorMask,
SURFOBJ * Colors,
XLATEOBJ * ColorsXlate,
LONG XHot,
LONG YHot,
LONG X,
LONG Y,
RECTL * BoundaryRect,
FLONG Flags
);
extern void
DrvMovePointer(
SURFOBJ * Surface,
LONG X,
LONG Y,
RECTL * BoundaryRect
);
// surface.c
extern HBITMAP
DrvCreateDeviceBitmap(
DHPDEV DeviceHandle,
SIZEL Size,
ULONG Format
);
extern void
DrvDeleteDeviceBitmap(
DHSURF SurfaceHandle
);
// misc.c
extern ULONG
GdiFormatToBPP(
ULONG GdiFormat
);
extern ULONG
BPPToGdiFormat(
ULONG BitsPerPixel
);
extern const PERM3_FORMAT *
GdiFormatToPerm3Format(
ULONG GdiFormat
);
extern void
SurfobjToPerm3Surface(
PERM3_SURFACE * Perm3Surface,
SURFOBJ * Surfobj,
XLATEOBJ * Xlate,
BOOL Source
);
extern void
FreeSurfobjDerivedPerm3Surface(
PERM3_SURFACE * Perm3Surface
);
extern const PERM3_FORMAT *
GetRGBFormat();
extern const PERM3_FORMAT *
GetBGRFormat();
extern ULONG
PackXY(
ULONG X,
ULONG Y
);
extern ULONG
Abs(
LONG Value
);
extern ULONG
GetSizeofPaletteMasks(
const PERM3_FORMAT * Format
);
// blt.c
extern BOOL
DrvBitBlt(
SURFOBJ * DestSurface,
SURFOBJ * SourceSurface,
SURFOBJ * MaskSurface,
CLIPOBJ * Clipper,
XLATEOBJ * Xlate,
RECTL * DestRect,
POINTL * SourceTopLeft,
POINTL * MaskTopLeft,
BRUSHOBJ * Brush,
POINTL * BrushOrigin,
ROP4 Rop
);
extern BOOL
DrvAnyBlt(
SURFOBJ * DestSurface,
SURFOBJ * SourceSurface,
SURFOBJ * MaskSurface,
CLIPOBJ * Clipper,
XLATEOBJ * Xlate,
POINTL * OriginTopLeft,
RECTL * DestRect,
RECTL * SourceRect,
POINTL * MaskTopLeft,
BRUSHOBJ * Brush,
POINTL * BrushOrigin,
ROP4 Rop,
ULONG Mode,
ULONG Flags
);
extern BOOL
DrvTransparentBlt(
SURFOBJ * DestSurface,
SURFOBJ * SourceSurface,
CLIPOBJ * Clipper,
XLATEOBJ * Xlate,
RECTL * DestRect,
RECTL * SourceRect,
ULONG TransColor
);
extern BOOL
TryBothBlt(
PERM3_BLT_PARAM * Parameters
);
extern BOOL
HardwareBlt(
PERM3_BLT_PARAM * Parameters
);
// interrupt.c
extern BOOL
InitializeInterrupts();
extern BOOL
WaitForVerticalSync();
extern BOOL
FlipPrimaryOnVSync(
LPVOID NewPrimary
);
extern BOOL
IsFlipPending();
// dma.c
extern BOOL
InitializeDMA();
extern ULONG
RegisterToTag(
ULONG Register
);
extern void
WaitForDMASpace(
ULONG Ulongs
);
extern void
QueueDMATag(
ULONG Tag,
ULONG Data
);
extern void
QueueDMAHold(
ULONG Tag,
ULONG Count
);
extern void
QueueDMAIncrement(
ULONG Tag,
ULONG Count
);
extern void
QueueDMAIndex(
ULONG Register,
ULONG Mask
);
extern void
QueueDMAUlong(
ULONG Data
);
extern void
EndDMA();
extern void
DMAInterrupt();
extern void
WaitNotBusy();
extern BOOL
IsBusy();
// path.c
extern BOOL DrvFillPath(
SURFOBJ * DestSurface,
PATHOBJ * Path,
CLIPOBJ * Clipper,
BRUSHOBJ * Brush,
POINTL * BrushOrigin,
MIX Mix,
FLONG Options
);
// line.c
extern BOOL DrvStrokePath(
SURFOBJ * DestSurface,
PATHOBJ * Path,
CLIPOBJ * Clipper,
XFORMOBJ * Xform,
BRUSHOBJ * Brush,
POINTL * BrushOrigin,
LINEATTRS * Attributes,
MIX Mix
);
// context.c
extern void
Restore2DContext();
// brush.c
extern BOOL
DrvRealizeBrush(
BRUSHOBJ * Brush,
SURFOBJ * TargetSurface,
SURFOBJ * PatternSurface,
SURFOBJ * MaskSurface,
XLATEOBJ * Xlate,
ULONG Hatch
);
extern void
HwBrush(
PERM3_BLT_PARAM * Parameters
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -