reactos/include/ddk/swenum.h
Amine Khaldi 527f2f9057 [SHELL/EXPERIMENTS]
* Create a branch for some evul shell experiments.

svn path=/branches/shell-experiments/; revision=61927
2014-02-02 19:37:27 +00:00

162 lines
3.2 KiB
C

#pragma once
#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;
#ifdef _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 /* _KS_ */
#ifdef _NTDDK_
#ifndef _KS_
typedef VOID
(NTAPI *PFNREFERENCEDEVICEOBJECT)(
_In_ PVOID Context);
typedef VOID
(NTAPI *PFNDEREFERENCEDEVICEOBJECT)(
_In_ PVOID Context);
typedef NTSTATUS
(NTAPI *PFNQUERYREFERENCESTRING)(
_In_ PVOID Context,
_Inout_ PWCHAR *String);
#endif /* !_KS_ */
#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
#ifdef _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);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsCreateBusEnumObject(
_In_ PWSTR BusIdentifier,
_In_ PDEVICE_OBJECT BusDeviceObject,
_In_ PDEVICE_OBJECT PhysicalDeviceObject,
_In_opt_ PDEVICE_OBJECT PnpDeviceObject,
_In_opt_ REFGUID InterfaceGuid,
_In_opt_ PWSTR ServiceRelativePath);
KSDDKAPI
NTSTATUS
NTAPI
KsGetBusEnumIdentifier(
_Inout_ PIRP Irp);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsGetBusEnumPnpDeviceObject(
_In_ PDEVICE_OBJECT DeviceObject,
_Out_ PDEVICE_OBJECT *PnpDeviceObject);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsInstallBusEnumInterface(
_In_ PIRP Irp);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsIsBusEnumChildDevice(
_In_ PDEVICE_OBJECT DeviceObject,
_Out_ PBOOLEAN ChildDevice);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsRemoveBusEnumInterface(
_In_ PIRP Irp);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsServiceBusEnumPnpRequest(
_In_ PDEVICE_OBJECT DeviceObject,
_Inout_ PIRP Irp);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsServiceBusEnumCreateRequest(
_In_ PDEVICE_OBJECT DeviceObject,
_Inout_ PIRP Irp);
_IRQL_requires_max_(PASSIVE_LEVEL)
KSDDKAPI
NTSTATUS
NTAPI
KsGetBusEnumParentFDOFromChildPDO(
_In_ PDEVICE_OBJECT DeviceObject,
_Out_ PDEVICE_OBJECT *FunctionalDeviceObject);
#endif /* _KS_ */
#if defined(__cplusplus)
}
#endif
#endif /* _NTDDK_ */
#endif /* _SWENUM_ */