diff fuhtark_test/include/ddk/swenum.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/swenum.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,153 @@
+#ifndef _SWENUM_
+#define _SWENUM_
+
+#define IOCTL_SWENUM_INSTALL_INTERFACE CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 0x000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SWENUM_REMOVE_INTERFACE CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 0x001, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SWENUM_GET_BUS_ID CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 0x002, METHOD_NEITHER, FILE_READ_ACCESS)
+
+typedef struct _SWENUM_INSTALL_INTERFACE {
+    GUID    DeviceId;
+    GUID    InterfaceId;
+    WCHAR  ReferenceString[1];
+    
+} SWENUM_INSTALL_INTERFACE, *PSWENUM_INSTALL_INTERFACE;
+
+#if defined(_KS_)
+#define STATIC_BUSID_SoftwareDeviceEnumerator STATIC_KSMEDIUMSETID_Standard
+#define BUSID_SoftwareDeviceEnumerator KSMEDIUMSETID_Standard
+#else
+#define STATIC_BUSID_SoftwareDeviceEnumerator \
+    0x4747B320L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00
+#endif
+
+#if defined(_NTDDK_)
+
+
+#if !defined(_KS_)
+
+typedef VOID (NTAPI *PFNREFERENCEDEVICEOBJECT)(PVOID Context);
+typedef VOID (NTAPI *PFNDEREFERENCEDEVICEOBJECT)(PVOID Context);
+typedef NTSTATUS (NTAPI *PFNQUERYREFERENCESTRING)(PVOID Context, PWCHAR *String);
+
+#endif
+
+#define BUS_INTERFACE_SWENUM_VERSION    0x100
+
+typedef struct _BUS_INTERFACE_SWENUM
+{
+    INTERFACE Interface;
+    PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject;
+    PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
+    PFNQUERYREFERENCESTRING QueryReferenceString;
+} BUS_INTERFACE_SWENUM, *PBUS_INTERFACE_SWENUM;
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#if defined(_KS_)
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsQuerySoftwareBusInterface(
+    IN PDEVICE_OBJECT PnpDeviceObject,
+    OUT PBUS_INTERFACE_SWENUM BusInterface
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsReferenceSoftwareBusObject(
+    IN KSDEVICE_HEADER Header
+);
+
+KSDDKAPI
+VOID
+NTAPI
+KsDereferenceSoftwareBusObject(
+    IN KSDEVICE_HEADER  Header
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsCreateBusEnumObject(
+    IN PWSTR BusIdentifier,
+    IN PDEVICE_OBJECT BusDeviceObject,
+    IN PDEVICE_OBJECT PhysicalDeviceObject,
+    IN PDEVICE_OBJECT PnpDeviceObject,
+    IN REFGUID InterfaceGuid,
+    IN PWSTR ServiceRelativePath
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsGetBusEnumIdentifier(
+    IN OUT PIRP Irp
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsGetBusEnumPnpDeviceObject(
+    IN PDEVICE_OBJECT DeviceObject,
+    OUT PDEVICE_OBJECT *PnpDeviceObject
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsInstallBusEnumInterface(
+    IN PIRP Irp
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsIsBusEnumChildDevice(
+    IN PDEVICE_OBJECT DeviceObject,
+    OUT PBOOLEAN ChildDevice
+);
+
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsRemoveBusEnumInterface(
+    IN PIRP Irp
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsServiceBusEnumPnpRequest(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN OUT PIRP Irp
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsServiceBusEnumCreateRequest(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN OUT PIRP Irp
+);
+
+KSDDKAPI
+NTSTATUS
+NTAPI
+KsGetBusEnumParentFDOFromChildPDO(
+    IN PDEVICE_OBJECT DeviceObject,
+    OUT PDEVICE_OBJECT *FunctionalDeviceObject
+);
+
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+#endif
+#endif
+