reactos/ntoskrnl/wmi/wmip.h
Thomas Faber 5e891f727f
[NTOS:WMI] WMIP_GUID_OBJECT must start with an event object, as it is waitable.
The initializer for WmipGuidObjectType does not set UseDefaultObject,
and it's possible for user mode to obtain a handle to a GUID object
with SYNCHRONIZE access. Therefore that handle can be passed to
NtWaitForSingleObject, which means it must start with a DISPATCHER_HEADER.
2020-02-15 20:43:26 +01:00

58 lines
1.1 KiB
C

#pragma once
extern POBJECT_TYPE WmipGuidObjectType;
#define GUID_STRING_LENGTH 36
typedef struct _WMIP_IRP_CONTEXT
{
LIST_ENTRY GuidObjectListHead;
} WMIP_IRP_CONTEXT, *PWMIP_IRP_CONTEXT;
typedef struct _WMIP_GUID_OBJECT
{
KEVENT Event;
GUID Guid;
PIRP Irp;
LIST_ENTRY IrpLink;
} WMIP_GUID_OBJECT, *PWMIP_GUID_OBJECT;
_Function_class_(DRIVER_INITIALIZE)
_IRQL_requires_same_
NTSTATUS
NTAPI
WmipDriverEntry(
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath);
NTSTATUS
NTAPI
WmipInitializeGuidObjectType(
VOID);
NTSTATUS
NTAPI
WmipOpenGuidObject(
_In_ LPCGUID Guid,
_In_ ACCESS_MASK DesiredAccess,
_In_ KPROCESSOR_MODE AccessMode,
_Out_ PHANDLE OutGuidObjectHandle,
_Outptr_ PVOID *OutGuidObject);
NTSTATUS
NTAPI
WmipOpenGuidObjectByName(
_In_ POBJECT_ATTRIBUTES ObjectAttributes,
_In_ ACCESS_MASK DesiredAccess,
_In_ KPROCESSOR_MODE AccessMode,
_Out_ PHANDLE OutGuidObjectHandle,
_Outptr_ PVOID *OutGuidObject);
NTSTATUS
NTAPI
WmipQueryRawSMBiosTables(
_Inout_ ULONG *InOutBufferSize,
_Out_opt_ PVOID OutBuffer);