Go to the documentation of this file.00001 #pragma once
00002
00003 #include <strmini.h>
00004 #define YDEBUG
00005 #include <debug.h>
00006
00007 #define STREAMDEBUG_LEVEL DebugLevelMaximum
00008
00009 typedef BOOLEAN (NTAPI *SYNCHRONIZE_FUNC) (IN PKINTERRUPT Interrupt, IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID SynchronizeContext);
00010
00011 typedef struct
00012 {
00013 HW_INITIALIZATION_DATA Data;
00014
00015 }STREAM_CLASS_DRIVER_EXTENSION, *PSTREAM_CLASS_DRIVER_EXTENSION;
00016
00017 typedef struct
00018 {
00019 LIST_ENTRY Entry;
00020 PVOID Start;
00021 ULONG Length;
00022 }MEMORY_RESOURCE_LIST, *PMEMORY_RESOURCE_LIST;
00023
00024 typedef struct
00025 {
00026 KSDEVICE_HEADER Header;
00027 PDEVICE_OBJECT LowerDeviceObject;
00028 PDEVICE_OBJECT PhysicalDeviceObject;
00029
00030 SYNCHRONIZE_FUNC SynchronizeFunction;
00031
00032 ULONG MapRegisters;
00033 PDMA_ADAPTER DmaAdapter;
00034 PVOID DmaCommonBuffer;
00035 PHYSICAL_ADDRESS DmaPhysicalAddress;
00036
00037 PKINTERRUPT Interrupt;
00038 KDPC InterruptDpc;
00039
00040 LIST_ENTRY MemoryResourceList;
00041
00042 ULONG StreamDescriptorSize;
00043 PHW_STREAM_DESCRIPTOR StreamDescriptor;
00044 PSTREAM_CLASS_DRIVER_EXTENSION DriverExtension;
00045
00046 PVOID DeviceExtension;
00047 LONG InstanceCount;
00048
00049 }STREAM_DEVICE_EXTENSION, *PSTREAM_DEVICE_EXTENSION;
00050
00051 typedef struct
00052 {
00053 HW_STREAM_REQUEST_BLOCK Block;
00054 KEVENT Event;
00055 }HW_STREAM_REQUEST_BLOCK_EXT, *PHW_STREAM_REQUEST_BLOCK_EXT;
00056
00057 NTSTATUS
00058 NTAPI
00059 StreamClassCreateFilter(
00060 IN PDEVICE_OBJECT DeviceObject,
00061 IN PIRP Irp);
00062
00063 NTSTATUS
00064 NTAPI
00065 StreamClassPnp(
00066 IN PDEVICE_OBJECT DeviceObject,
00067 IN PIRP Irp);
00068
00069 NTSTATUS
00070 NTAPI
00071 StreamClassPower(
00072 IN PDEVICE_OBJECT DeviceObject,
00073 IN PIRP Irp);
00074
00075 NTSTATUS
00076 NTAPI
00077 StreamClassSystemControl(
00078 IN PDEVICE_OBJECT DeviceObject,
00079 IN PIRP Irp);
00080
00081 NTSTATUS
00082 NTAPI
00083 StreamClassCleanup(
00084 IN PDEVICE_OBJECT DeviceObject,
00085 IN PIRP Irp);
00086
00087 NTSTATUS
00088 NTAPI
00089 StreamClassFlushBuffers(
00090 IN PDEVICE_OBJECT DeviceObject,
00091 IN PIRP Irp);
00092
00093 NTSTATUS
00094 NTAPI
00095 StreamClassDeviceControl(
00096 IN PDEVICE_OBJECT DeviceObject,
00097 IN PIRP Irp);
00098
00099 NTSTATUS
00100 NTAPI
00101 StreamClassAddDevice(
00102 IN PDRIVER_OBJECT DriverObject,
00103 IN PDEVICE_OBJECT PhysicalDeviceObject);
00104
00105
00106 NTSTATUS
00107 NTAPI
00108 ForwardIrpSynchronous(
00109 IN PDEVICE_OBJECT DeviceObject,
00110 IN PIRP Irp);
00111
00112 BOOLEAN
00113 NTAPI
00114 StreamClassSynchronize(
00115 IN PKINTERRUPT Interrupt,
00116 IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
00117 IN PVOID SynchronizeContext);
00118
00119 BOOLEAN
00120 NTAPI
00121 StreamClassInterruptRoutine(
00122 IN PKINTERRUPT Interrupt,
00123 IN PVOID ServiceContext);
00124
00125 VOID
00126 NTAPI
00127 StreamClassInterruptDpc(
00128 IN PKDPC Dpc,
00129 IN PVOID DeferredContext,
00130 IN PVOID SystemArgument1,
00131 IN PVOID SystemArgument2);
00132
00133 VOID
00134 CompleteIrp(
00135 IN PIRP Irp,
00136 IN NTSTATUS Status,
00137 IN ULONG_PTR Information);