2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Kernel Streaming
4 * FILE: drivers/wdm/audio/sysaudio/deviface.c
5 * PURPOSE: System Audio graph builder
6 * PROGRAMMER: Johannes Anderwald
21 Pin_fnDeviceIoControl(
22 PDEVICE_OBJECT DeviceObject
,
25 PDISPATCH_CONTEXT Context
;
28 PIO_STACK_LOCATION IoStack
;
30 DPRINT1("Pin_fnDeviceIoControl called DeviceObject %p Irp %p\n", DeviceObject
);
32 IoStack
= IoGetCurrentIrpStackLocation(Irp
);
34 Context
= (PDISPATCH_CONTEXT
)IoStack
->FileObject
->FsContext2
;
37 Status
= KsSynchronousIoControlDevice(Context
->FileObject
, KernelMode
, IoStack
->Parameters
.DeviceIoControl
.IoControlCode
,
38 IoStack
->Parameters
.DeviceIoControl
.Type3InputBuffer
,
39 IoStack
->Parameters
.DeviceIoControl
.InputBufferLength
,
41 IoStack
->Parameters
.DeviceIoControl
.OutputBufferLength
,
44 DPRINT1("Status %x\n", Status
);
46 Irp
->IoStatus
.Information
= BytesReturned
;
47 Irp
->IoStatus
.Status
= Status
;
48 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
55 PDEVICE_OBJECT DeviceObject
,
58 DPRINT1("Pin_fnRead called DeviceObject %p Irp %p\n", DeviceObject
);
60 return STATUS_SUCCESS
;
65 PinWriteCompletionRoutine(
66 IN PDEVICE_OBJECT DeviceObject
,
70 PIRP CIrp
= (PIRP
)Context
;
72 CIrp
->IoStatus
.Status
= STATUS_SUCCESS
;
73 CIrp
->IoStatus
.Information
= 0;
74 IoCompleteRequest(CIrp
, IO_NO_INCREMENT
);
75 return STATUS_SUCCESS
;
81 PDEVICE_OBJECT DeviceObject
,
84 PDISPATCH_CONTEXT Context
;
85 PIO_STACK_LOCATION IoStack
;
89 DPRINT1("Pin_fnWrite called DeviceObject %p Irp %p\n", DeviceObject
);
91 IoStack
= IoGetCurrentIrpStackLocation(Irp
);
93 Context
= (PDISPATCH_CONTEXT
)IoStack
->FileObject
->FsContext2
;
96 Status
= KsSynchronousIoControlDevice(Context
->FileObject
, KernelMode
, IOCTL_KS_WRITE_STREAM
,
97 IoStack
->Parameters
.DeviceIoControl
.Type3InputBuffer
,
98 IoStack
->Parameters
.DeviceIoControl
.InputBufferLength
,
100 IoStack
->Parameters
.DeviceIoControl
.OutputBufferLength
,
103 Irp
->IoStatus
.Information
= BytesReturned
;
104 Irp
->IoStatus
.Status
= Status
;
105 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
112 PDEVICE_OBJECT DeviceObject
,
115 DPRINT1("Pin_fnFlush called DeviceObject %p Irp %p\n", DeviceObject
);
117 return STATUS_SUCCESS
;
123 PDEVICE_OBJECT DeviceObject
,
126 DPRINT1("Pin_fnClose called DeviceObject %p Irp %p\n", DeviceObject
);
129 return STATUS_SUCCESS
;
135 PDEVICE_OBJECT DeviceObject
,
138 DPRINT1("Pin_fnQuerySecurity called DeviceObject %p Irp %p\n", DeviceObject
);
141 return STATUS_SUCCESS
;
147 PDEVICE_OBJECT DeviceObject
,
151 DPRINT1("Pin_fnSetSecurity called DeviceObject %p Irp %p\n", DeviceObject
);
153 return STATUS_SUCCESS
;
158 Pin_fnFastDeviceIoControl(
159 PFILE_OBJECT FileObject
,
162 ULONG InputBufferLength
,
164 ULONG OutputBufferLength
,
166 PIO_STATUS_BLOCK IoStatus
,
167 PDEVICE_OBJECT DeviceObject
)
169 DPRINT1("Pin_fnFastDeviceIoControl called DeviceObject %p Irp %p\n", DeviceObject
);
179 PFILE_OBJECT FileObject
,
180 PLARGE_INTEGER FileOffset
,
185 PIO_STATUS_BLOCK IoStatus
,
186 PDEVICE_OBJECT DeviceObject
)
188 DPRINT1("Pin_fnFastRead called DeviceObject %p Irp %p\n", DeviceObject
);
197 PFILE_OBJECT FileObject
,
198 PLARGE_INTEGER FileOffset
,
203 PIO_STATUS_BLOCK IoStatus
,
204 PDEVICE_OBJECT DeviceObject
)
206 DPRINT1("Pin_fnFastWrite called DeviceObject %p Irp %p\n", DeviceObject
);
211 static KSDISPATCH_TABLE PinTable
=
213 Pin_fnDeviceIoControl
,
220 Pin_fnFastDeviceIoControl
,
230 KSOBJECT_HEADER ObjectHeader
;
232 /* allocate object header */
233 Status
= KsAllocateObjectHeader(&ObjectHeader
, 0, NULL
, Irp
, &PinTable
);