#include <ntddk.h>
#include <portcls.h>
-#define YDEBUG
+#define NDEBUG
#include <debug.h>
#include <dmusicks.h>
#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
#define TAG_PORTCLASS TAG('P', 'C', 'L', 'S')
-#ifdef _MSC_VER
- #define STDCALL
- #define DDKAPI
-#endif
-
#define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
NTSTATUS
NewDispatchObject(
IN PIRP Irp,
IN IIrpTarget * Target,
- IN LPWSTR Name);
+ IN ULONG ObjectCreateItemCount,
+ IN PKSOBJECT_CREATE_ITEM ObjectCreateItem);
PMINIPORTWAVECYCLIC
GetWaveCyclicMiniport(
GetDeviceObject(
IPortWaveCyclic* iface);
-IIrpQueue*
+VOID
+NTAPI
+PcIoTimerRoutine(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PVOID Context);
+
+NTSTATUS
NTAPI
-IPortWavePciStream_GetIrpQueue(
- IN IPortWavePciStream *iface);
+NewIUnregisterSubdevice(
+ OUT PUNREGISTERSUBDEVICE *OutDevice);
NTSTATUS
NTAPI
-NewIPortWavePciStream(
- OUT PPORTWAVEPCISTREAM *Stream);
+NewIUnregisterPhysicalConnection(
+ OUT PUNREGISTERPHYSICALCONNECTION *OutConnection);
#define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
PropGeneral, PropInstances, PropIntersection)\
typedef struct
{
LIST_ENTRY Entry;
- KSOBJECT_HEADER ObjectHeader;
-}SUBDEVICE_ENTRY;
+ UNICODE_STRING SymbolicLink;
+}SYMBOLICLINK_ENTRY, *PSYMBOLICLINK_ENTRY;
+
+
+typedef struct
+{
+ LIST_ENTRY Entry;
+ ISubdevice *SubDevice;
+ UNICODE_STRING Name;
+ LIST_ENTRY SymbolicLinkList;
+}SUBDEVICE_ENTRY, *PSUBDEVICE_ENTRY;
typedef struct
{
LIST_ENTRY Entry;
ISubdevice * FromSubDevice;
- LPWSTR FromUnicodeString;
+ UNICODE_STRING FromUnicodeString;
ULONG FromPin;
ISubdevice * ToSubDevice;
- LPWSTR ToUnicodeString;
+ UNICODE_STRING ToUnicodeString;
ULONG ToPin;
-}PHYSICAL_CONNECTION;
+}PHYSICAL_CONNECTION, *PPHYSICAL_CONNECTION;
typedef struct
{
LIST_ENTRY SubDeviceList;
LIST_ENTRY PhysicalConnectionList;
+ LIST_ENTRY TimerList;
+ KSPIN_LOCK TimerListLock;
+
} PCLASS_DEVICE_EXTENSION, *PPCLASS_DEVICE_EXTENSION;
PIRP Irp;
}CLOSESTREAM_CONTEXT, *PCLOSESTREAM_CONTEXT;
+typedef struct
+{
+ LIST_ENTRY Entry;
+ PIO_TIMER_ROUTINE pTimerRoutine;
+ PVOID Context;
+}TIMER_CONTEXT, *PTIMER_CONTEXT;
+
#endif