diff fuhtark_test/include/ddk/punknown.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/ddk/punknown.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,89 @@
+/*
+    ReactOS Kernel-Mode COM
+    by Andrew Greenwood
+
+    This file is in the public domain.
+*/
+
+#ifndef _UNKNOWN_H_
+#define _UNKNOWN_H_
+
+#ifdef __cplusplus
+extern "C" {
+#include <wdm.h>
+}
+#else
+#include <wdm.h>
+#endif
+
+#include <windef.h>
+#define COM_NO_WINDOWS_H
+#include <basetyps.h>
+
+#ifdef PUT_GUIDS_HERE
+    #include <initguid.h>
+#endif
+
+
+/* ===============================================================
+    IUnknown
+*/
+
+#ifndef __IUnknown_INTERFACE_DEFINED__
+#define __IUnknown_INTERFACE_DEFINED__
+DEFINE_GUID(
+    IID_IUnknown,
+    0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x46);
+
+#undef INTERFACE
+#define INTERFACE IUnknown
+
+DECLARE_INTERFACE(IUnknown)
+{
+    STDMETHOD_(NTSTATUS, QueryInterface)( THIS_
+        IN  REFIID,
+        OUT PVOID*)
+    PURE;
+
+    STDMETHOD_(ULONG, AddRef)( THIS )
+    PURE;
+
+    STDMETHOD_(ULONG, Release)( THIS )
+    PURE;
+};
+#endif
+
+#undef INTERFACE
+
+typedef IUnknown *PUNKNOWN;
+
+
+/* ===============================================================
+    IUnknown definition
+    Boilerplate code macro for use in subclassed interfaces
+*/
+
+#define DEFINE_ABSTRACT_UNKNOWN() \
+    STDMETHOD_(NTSTATUS, QueryInterface)( THIS_ \
+        REFIID InterfaceId, \
+        PVOID* Interface) \
+    PURE; \
+\
+    STDMETHOD_(ULONG, AddRef)(THIS) \
+    PURE; \
+\
+    STDMETHOD_(ULONG, Release)(THIS) \
+    PURE;
+
+
+/* ===============================================================
+    Constructor callback definition
+*/
+
+typedef HRESULT (NTAPI *PFNCREATEINSTANCE)(
+    OUT PUNKNOWN* Unknown,
+    IN  REFCLSID ClassId,
+    IN  PUNKNOWN OuterUnknown,
+    IN  POOL_TYPE PoolType);
+
+#endif