1 2 #pragma once 3 4 extern POBJECT_TYPE WmipGuidObjectType; 5 6 #define GUID_STRING_LENGTH 36 7 8 typedef struct _WMIP_IRP_CONTEXT 9 { 10 LIST_ENTRY GuidObjectListHead; 11 } WMIP_IRP_CONTEXT, *PWMIP_IRP_CONTEXT; 12 13 typedef struct _WMIP_GUID_OBJECT 14 { 15 KEVENT Event; 16 GUID Guid; 17 PIRP Irp; 18 LIST_ENTRY IrpLink; 19 } WMIP_GUID_OBJECT, *PWMIP_GUID_OBJECT; 20 21 22 _Function_class_(DRIVER_INITIALIZE) 23 _IRQL_requires_same_ 24 NTSTATUS 25 NTAPI 26 WmipDriverEntry( 27 _In_ PDRIVER_OBJECT DriverObject, 28 _In_ PUNICODE_STRING RegistryPath); 29 30 NTSTATUS 31 NTAPI 32 WmipInitializeGuidObjectType( 33 VOID); 34 35 NTSTATUS 36 NTAPI 37 WmipOpenGuidObject( 38 _In_ LPCGUID Guid, 39 _In_ ACCESS_MASK DesiredAccess, 40 _In_ KPROCESSOR_MODE AccessMode, 41 _Out_ PHANDLE OutGuidObjectHandle, 42 _Outptr_ PVOID *OutGuidObject); 43 44 NTSTATUS 45 NTAPI 46 WmipOpenGuidObjectByName( 47 _In_ POBJECT_ATTRIBUTES ObjectAttributes, 48 _In_ ACCESS_MASK DesiredAccess, 49 _In_ KPROCESSOR_MODE AccessMode, 50 _Out_ PHANDLE OutGuidObjectHandle, 51 _Outptr_ PVOID *OutGuidObject); 52 53 NTSTATUS 54 NTAPI 55 WmipQueryRawSMBiosTables( 56 _Inout_ ULONG *InOutBufferSize, 57 _Out_opt_ PVOID OutBuffer); 58 59