Implement a system resources management routines

This commit is contained in:
2024-05-16 23:08:59 +02:00
parent 058649036f
commit 74c1b03a6b
8 changed files with 297 additions and 0 deletions

View File

@@ -24,6 +24,11 @@ XTFASTCALL
VOID
KeAcquireSpinLock(IN OUT PKSPIN_LOCK SpinLock);
XTAPI
XTSTATUS
KeAcquireSystemResource(IN SYSTEM_RESOURCE_TYPE ResourceType,
OUT PSYSTEM_RESOURCE_HEADER *ResourceHeader);
XTAPI
BOOLEAN
KeCancelTimer(IN PKTIMER Timer);
@@ -32,6 +37,11 @@ XTFASTCALL
KRUNLEVEL
KeGetCurrentRunLevel(VOID);
XTAPI
XTSTATUS
KeGetSystemResource(IN SYSTEM_RESOURCE_TYPE ResourceType,
OUT PSYSTEM_RESOURCE_HEADER *ResourceHeader);
XTAPI
BOOLEAN
KeGetTimerState(IN PKTIMER Timer);
@@ -101,6 +111,10 @@ XTFASTCALL
VOID
KeReleaseSpinLock(IN OUT PKSPIN_LOCK SpinLock);
XTAPI
VOID
KeReleaseSystemResource(IN PSYSTEM_RESOURCE_HEADER ResourceHeader);
XTAPI
VOID
KeSetTargetProcessorDpc(IN PKDPC Dpc,

View File

@@ -183,6 +183,13 @@ typedef enum _MODE
MaximumMode
} MODE, *PMODE;
/* System resource types */
typedef enum _SYSTEM_RESOURCE_TYPE
{
SystemResourceInvalid,
SystemResourceFrameBuffer
} SYSTEM_RESOURCE_TYPE, *PSYSTEM_RESOURCE_TYPE;
/* Wait type */
typedef enum _WAIT_TYPE
{
@@ -500,4 +507,40 @@ typedef struct _KTHREAD
BOOLEAN StackResident;
} KTHREAD, *PKTHREAD;
/* System resource common header structure definition */
typedef struct _SYSTEM_RESOURCE_HEADER
{
LIST_ENTRY ListEntry;
SYSTEM_RESOURCE_TYPE ResourceType;
ULONG ResourceSize;
PVOID PhysicalAddress;
PVOID VirtualAddress;
BOOLEAN Acquired;
} SYSTEM_RESOURCE_HEADER, *PSYSTEM_RESOURCE_HEADER;
/* FrameBuffer system resource structure definition */
typedef struct _SYSTEM_RESOURCE_FRAMEBUFFER
{
SYSTEM_RESOURCE_HEADER Header;
ULONG_PTR BufferSize;
UINT Width;
UINT Height;
UINT Depth;
UINT PixelsPerScanLine;
UINT BitsPerPixel;
UINT Pitch;
PVOID Font;
struct
{
USHORT BlueShift;
USHORT BlueSize;
USHORT GreenShift;
USHORT GreenSize;
USHORT RedShift;
USHORT RedSize;
USHORT ReservedShift;
USHORT ReservedSize;
} Pixels;
} SYSTEM_RESOURCE_FRAMEBUFFER, *PSYSTEM_RESOURCE_FRAMEBUFFER;
#endif /* __XTDK_KEFUNCS_H */