3 /* ===============================================================
10 KSDDKAPI NTSTATUS NTAPI
12 IN PUNICODE_STRING SymbolicLink
,
13 IN PKSPIN_MEDIUM Medium
,
14 IN ULONG PinDirection
)
17 return STATUS_UNSUCCESSFUL
;
24 KSDDKAPI NTSTATUS NTAPI
26 IN PDEVICE_OBJECT DeviceObject
,
29 PIO_STACK_LOCATION IoStack
;
30 NTSTATUS Status
= STATUS_SUCCESS
;
32 IoStack
= IoGetCurrentIrpStackLocation(Irp
);
34 DPRINT1("KsDefaultDispatchPnp entered with func %x\n", IoStack
->MinorFunction
);
36 switch(IoStack
->MinorFunction
)
38 case IRP_MN_QUERY_DEVICE_RELATIONS
:
39 Irp
->IoStatus
.Information
= 0;
40 Irp
->IoStatus
.Status
= STATUS_INSUFFICIENT_RESOURCES
;
41 return STATUS_INSUFFICIENT_RESOURCES
;
42 case IRP_MN_REMOVE_DEVICE
:
44 // destroy device header, detach device and delete device
45 case IRP_MN_START_DEVICE
:
46 case IRP_MN_QUERY_REMOVE_DEVICE
:
47 case IRP_MN_CANCEL_STOP_DEVICE
:
48 case IRP_MN_SURPRISE_REMOVAL
:
49 Irp
->IoStatus
.Information
= 0;
50 Irp
->IoStatus
.Status
= STATUS_SUCCESS
;
51 return STATUS_SUCCESS
;
53 Irp
->IoStatus
.Information
= 0;
54 Irp
->IoStatus
.Status
= STATUS_UNSUCCESSFUL
;
55 //Status = IoCallDriver(NULL /* PnpBaseObject */, Irp);
65 KsSetDevicePnpAndBaseObject(
66 IN KSDEVICE_HEADER Header
,
67 IN PDEVICE_OBJECT PnpDeviceObject
,
68 IN PDEVICE_OBJECT BaseDevice
)
76 KSDDKAPI NTSTATUS NTAPI
77 KsDefaultDispatchPower(
78 IN PDEVICE_OBJECT DeviceObject
,
82 return STATUS_UNSUCCESSFUL
;
90 IN KSOBJECT_HEADER Header
,
91 IN PFNKSCONTEXT_DISPATCH PowerDispatch OPTIONAL
,
92 IN PVOID PowerContext OPTIONAL
)
100 KSDDKAPI NTSTATUS NTAPI
101 KsReferenceBusObject(
102 IN KSDEVICE_HEADER Header
)
105 return STATUS_UNSUCCESSFUL
;
112 KsDereferenceBusObject(
113 IN KSDEVICE_HEADER Header
)
121 KSDDKAPI NTSTATUS NTAPI
122 KsFreeObjectCreateItem(
123 IN KSDEVICE_HEADER Header
,
124 IN PUNICODE_STRING CreateItem
)
127 return STATUS_UNSUCCESSFUL
;
133 KSDDKAPI NTSTATUS NTAPI
134 KsFreeObjectCreateItemsByContext(
135 IN KSDEVICE_HEADER Header
,
139 return STATUS_UNSUCCESSFUL
;
145 KSDDKAPI NTSTATUS NTAPI
148 IN POOL_TYPE PoolType
,
149 IN ULONG_PTR ResourceName
,
150 IN ULONG ResourceType
,
152 OUT PULONG ResourceSize
)
155 return STATUS_UNSUCCESSFUL
;
163 IN PDRIVER_OBJECT DriverObject
)
171 KSDDKAPI NTSTATUS NTAPI
172 KsPinDataIntersectionEx(
176 IN ULONG DescriptorsCount
,
177 IN
const KSPIN_DESCRIPTOR
* Descriptor
,
178 IN ULONG DescriptorSize
,
179 IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL
,
180 IN PVOID HandlerContext OPTIONAL
)
183 return STATUS_UNSUCCESSFUL
;
189 KSDDKAPI PDEVICE_OBJECT NTAPI
190 KsQueryDevicePnpObject(
191 IN KSDEVICE_HEADER Header
)
201 KsRecalculateStackDepth(
202 IN KSDEVICE_HEADER Header
,
203 IN BOOLEAN ReuseStackLocation
)
212 KsSetTargetDeviceObject(
213 IN KSOBJECT_HEADER Header
,
214 IN PDEVICE_OBJECT TargetDevice OPTIONAL
)
224 IN KSOBJECT_HEADER Header
,
225 IN KSTARGET_STATE TargetState
)
233 KSDDKAPI NTSTATUS NTAPI
234 KsSynchronousIoControlDevice(
235 IN PFILE_OBJECT FileObject
,
236 IN KPROCESSOR_MODE RequestorMode
,
242 OUT PULONG BytesReturned
)
245 return STATUS_UNSUCCESSFUL
;
255 KsAcquireDeviceSecurityLock(
256 IN KSDEVICE_HEADER DevHeader
,
257 IN BOOLEAN Exclusive
)
260 PKSIDEVICE_HEADER Header
= (PKSIDEVICE_HEADER
)DevHeader
;
262 KeEnterCriticalRegion();
266 Status
= ExAcquireResourceExclusiveLite(&Header
->SecurityLock
, TRUE
);
270 Status
= ExAcquireResourceSharedLite(&Header
->SecurityLock
, TRUE
);
280 KsReleaseDeviceSecurityLock(
281 IN KSDEVICE_HEADER DevHeader
)
283 PKSIDEVICE_HEADER Header
= (PKSIDEVICE_HEADER
)DevHeader
;
285 ExReleaseResourceLite(&Header
->SecurityLock
);
286 KeLeaveCriticalRegion();