https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5e242c556646f8905485afbb5b9fd9fc8da6af5a
commit 5e242c556646f8905485afbb5b9fd9fc8da6af5a Author: Victor Perevertkin <victor.perevert...@reactos.org> AuthorDate: Fri Aug 28 15:28:45 2020 +0300 Commit: Victor Perevertkin <victor.perevert...@reactos.org> CommitDate: Fri Aug 28 15:28:45 2020 +0300 [NTOSKRNL_VISTA] Implement/stubplement more Etw, Io, Ke, Po functions CORE-17129 --- sdk/lib/drivers/ntoskrnl_vista/CMakeLists.txt | 2 + sdk/lib/drivers/ntoskrnl_vista/etw.c | 46 +++++++++++++ sdk/lib/drivers/ntoskrnl_vista/io.c | 93 +++++++++++++++++++++++++-- sdk/lib/drivers/ntoskrnl_vista/ke.c | 40 ++++++++++-- sdk/lib/drivers/ntoskrnl_vista/po.c | 43 +++++++++++++ 5 files changed, 214 insertions(+), 10 deletions(-) diff --git a/sdk/lib/drivers/ntoskrnl_vista/CMakeLists.txt b/sdk/lib/drivers/ntoskrnl_vista/CMakeLists.txt index 0fd8fd8c7e7..5ce01354762 100644 --- a/sdk/lib/drivers/ntoskrnl_vista/CMakeLists.txt +++ b/sdk/lib/drivers/ntoskrnl_vista/CMakeLists.txt @@ -4,8 +4,10 @@ add_definitions(-D_WIN32_WINNT=0x600) add_definitions(-DUNICODE -D_UNICODE -D__NTOSKRNL__ -D_NTOSKRNL_ -D_NTSYSTEM_) list(APPEND SOURCE + etw.c fsrtl.c io.c + po.c ke.c rtl.c) diff --git a/sdk/lib/drivers/ntoskrnl_vista/etw.c b/sdk/lib/drivers/ntoskrnl_vista/etw.c new file mode 100644 index 00000000000..903b0497297 --- /dev/null +++ b/sdk/lib/drivers/ntoskrnl_vista/etw.c @@ -0,0 +1,46 @@ +/* + * PROJECT: ReactOS Kernel - Vista+ APIs + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: Etw functions of Vista+ + * COPYRIGHT: 2020 Victor Perevertkin (victor.perevert...@reactos.org) + */ + +#include <ntdef.h> +#include <ntifs.h> + +_IRQL_requires_max_(HIGH_LEVEL) +NTSTATUS +NTKERNELAPI +NTAPI +EtwWrite( + _In_ REGHANDLE RegHandle, + _In_ PCEVENT_DESCRIPTOR EventDescriptor, + _In_opt_ LPCGUID ActivityId, + _In_ ULONG UserDataCount, + _In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData) +{ + return STATUS_NOT_IMPLEMENTED; +} + +_IRQL_requires_max_(PASSIVE_LEVEL) +NTSTATUS +NTKERNELAPI +NTAPI +EtwRegister( + _In_ LPCGUID ProviderId, + _In_opt_ PETWENABLECALLBACK EnableCallback, + _In_opt_ PVOID CallbackContext, + _Out_ PREGHANDLE RegHandle) +{ + return STATUS_NOT_IMPLEMENTED; +} + +_IRQL_requires_max_(PASSIVE_LEVEL) +NTSTATUS +NTKERNELAPI +NTAPI +EtwUnregister( + _In_ REGHANDLE RegHandle) +{ + return STATUS_NOT_IMPLEMENTED; +} diff --git a/sdk/lib/drivers/ntoskrnl_vista/io.c b/sdk/lib/drivers/ntoskrnl_vista/io.c index 1d88cbb68f1..3f58ce9574c 100644 --- a/sdk/lib/drivers/ntoskrnl_vista/io.c +++ b/sdk/lib/drivers/ntoskrnl_vista/io.c @@ -1,14 +1,23 @@ /* - * PROJECT: ReactOS Kernel - Vista+ APIs - * LICENSE: GPL v2 - See COPYING in the top level directory - * FILE: lib/drivers/ntoskrnl_vista/io.c - * PURPOSE: Io functions of Vista+ - * PROGRAMMERS: Pierre Schweitzer <pie...@reactos.org> + * PROJECT: ReactOS Kernel - Vista+ APIs + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: Io functions of Vista+ + * COPYRIGHT: 2016 Pierre Schweitzer (pie...@reactos.org) + * 2020 Victor Perevertkin (victor.perevert...@reactos.org) */ #include <ntdef.h> #include <ntifs.h> +typedef struct _EX_WORKITEM_CONTEXT +{ + PIO_WORKITEM WorkItem; + PIO_WORKITEM_ROUTINE_EX WorkItemRoutineEx; + PVOID Context; +} EX_WORKITEM_CONTEXT, *PEX_WORKITEM_CONTEXT; + +#define TAG_IOWI 'IWOI' + NTKERNELAPI NTSTATUS NTAPI @@ -25,3 +34,77 @@ IoGetIrpExtraCreateParameter(IN PIRP Irp, *ExtraCreateParameter = Irp->UserBuffer; return STATUS_SUCCESS; } + +_Function_class_(IO_WORKITEM_ROUTINE) +static +VOID +NTAPI +IopWorkItemExCallback( + PDEVICE_OBJECT DeviceObject, + PVOID Ctx) +{ + PEX_WORKITEM_CONTEXT context = Ctx; + + context->WorkItemRoutineEx(DeviceObject, context->Context, context->WorkItem); + ExFreePoolWithTag(context, TAG_IOWI); +} + +NTKERNELAPI +VOID +NTAPI +IoQueueWorkItemEx( + _Inout_ PIO_WORKITEM IoWorkItem, + _In_ PIO_WORKITEM_ROUTINE_EX WorkerRoutine, + _In_ WORK_QUEUE_TYPE QueueType, + _In_opt_ __drv_aliasesMem PVOID Context) +{ + PEX_WORKITEM_CONTEXT newContext = ExAllocatePoolWithTag(NonPagedPoolMustSucceed, sizeof(*newContext), TAG_IOWI); + newContext->WorkItem = IoWorkItem; + newContext->WorkItemRoutineEx = WorkerRoutine; + newContext->Context = Context; + + IoQueueWorkItem(IoWorkItem, IopWorkItemExCallback, QueueType, Context); +} + +_IRQL_requires_max_(PASSIVE_LEVEL) +_Must_inspect_result_ +NTKERNELAPI +NTSTATUS +NTAPI +IoGetDevicePropertyData( + _In_ PDEVICE_OBJECT Pdo, + _In_ CONST DEVPROPKEY *PropertyKey, + _In_ LCID Lcid, + _Reserved_ ULONG Flags, + _In_ ULONG Size, + _Out_ PVOID Data, + _Out_ PULONG RequiredSize, + _Out_ PDEVPROPTYPE Type) +{ + return STATUS_NOT_IMPLEMENTED; +} + +_IRQL_requires_max_(PASSIVE_LEVEL) +_Must_inspect_result_ +NTKERNELAPI +NTSTATUS +IoSetDeviceInterfacePropertyData( + _In_ PUNICODE_STRING SymbolicLinkName, + _In_ CONST DEVPROPKEY *PropertyKey, + _In_ LCID Lcid, + _In_ ULONG Flags, + _In_ DEVPROPTYPE Type, + _In_ ULONG Size, + _In_reads_bytes_opt_(Size) PVOID Data) +{ + return STATUS_NOT_IMPLEMENTED; +} + +NTKERNELAPI +IO_PRIORITY_HINT +NTAPI +IoGetIoPriorityHint( + _In_ PIRP Irp) +{ + return IoPriorityNormal; +} \ No newline at end of file diff --git a/sdk/lib/drivers/ntoskrnl_vista/ke.c b/sdk/lib/drivers/ntoskrnl_vista/ke.c index e807225d87b..2f982659393 100644 --- a/sdk/lib/drivers/ntoskrnl_vista/ke.c +++ b/sdk/lib/drivers/ntoskrnl_vista/ke.c @@ -1,9 +1,9 @@ /* - * PROJECT: ReactOS Kernel - Vista+ APIs - * LICENSE: GPL v2 - See COPYING in the top level directory - * FILE: lib/drivers/ntoskrnl_vista/ke.c - * PURPOSE: Ke functions of Vista+ - * PROGRAMMERS: Pierre Schweitzer <pie...@reactos.org> + * PROJECT: ReactOS Kernel - Vista+ APIs + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: Ke functions of Vista+ + * COPYRIGHT: 2016 Pierre Schweitzer (pie...@reactos.org) + * 2020 Victor Perevertkin (victor.perevert...@reactos.org) */ #include <ntdef.h> @@ -25,3 +25,33 @@ KeQueryActiveProcessorCount(OUT PKAFFINITY ActiveProcessors OPTIONAL) RtlInitializeBitMap(&Bitmap, (PULONG)&ActiveMap, sizeof(ActiveMap) * 8); return RtlNumberOfSetBits(&Bitmap); } + +NTKERNELAPI +USHORT +NTAPI +KeQueryHighestNodeNumber() +{ + return 0; +} + +NTKERNELAPI +USHORT +NTAPI +KeGetCurrentNodeNumber() +{ + return 0; +} + +_IRQL_requires_max_(DISPATCH_LEVEL) +NTKERNELAPI +BOOLEAN +NTAPI +KeSetCoalescableTimer( + _Inout_ PKTIMER Timer, + _In_ LARGE_INTEGER DueTime, + _In_ ULONG Period, + _In_ ULONG TolerableDelay, + _In_opt_ PKDPC Dpc) +{ + return KeSetTimerEx(Timer, DueTime, Period, Dpc); +} diff --git a/sdk/lib/drivers/ntoskrnl_vista/po.c b/sdk/lib/drivers/ntoskrnl_vista/po.c new file mode 100644 index 00000000000..22d44bdd892 --- /dev/null +++ b/sdk/lib/drivers/ntoskrnl_vista/po.c @@ -0,0 +1,43 @@ +/* + * PROJECT: ReactOS Kernel - Vista+ APIs + * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + * PURPOSE: Po functions of Vista+ + * COPYRIGHT: 2020 Victor Perevertkin (victor.perevert...@reactos.org) + */ + +#include <ntdef.h> +#include <ntifs.h> + +NTKERNELAPI +NTSTATUS +NTAPI +PoRegisterPowerSettingCallback( + _In_opt_ PDEVICE_OBJECT DeviceObject, + _In_ LPCGUID SettingGuid, + _In_ PPOWER_SETTING_CALLBACK Callback, + _In_opt_ PVOID Context, + _Outptr_opt_ PVOID *Handle) +{ + return STATUS_NOT_IMPLEMENTED; +} + +_IRQL_requires_max_(APC_LEVEL) +NTKERNELAPI +NTSTATUS +NTAPI +PoUnregisterPowerSettingCallback( + _Inout_ PVOID Handle) +{ + return STATUS_NOT_IMPLEMENTED; +} + +_IRQL_requires_max_(DISPATCH_LEVEL) +NTKERNELAPI +BOOLEAN +NTAPI +PoQueryWatchdogTime( + _In_ PDEVICE_OBJECT Pdo, + _Out_ PULONG SecondsRemaining) +{ + return FALSE; +} \ No newline at end of file