mirror of
https://github.com/reactos/reactos.git
synced 2024-10-05 00:43:21 +00:00
- Implement KsQueryObjectAccessMask, KsQueryObjectCreateItem
- Use KSQUEUE_SPINLOCK_IRP_STORAGE macro for access the stored spin lock svn path=/trunk/; revision=42150
This commit is contained in:
parent
db1215455b
commit
1ad4db139c
|
@ -245,7 +245,7 @@ KsQueryDevicePnpObject(
|
|||
}
|
||||
|
||||
/*
|
||||
@unimplemented
|
||||
@implemented
|
||||
*/
|
||||
KSDDKAPI
|
||||
ACCESS_MASK
|
||||
|
@ -253,8 +253,11 @@ NTAPI
|
|||
KsQueryObjectAccessMask(
|
||||
IN KSOBJECT_HEADER Header)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
PKSIOBJECT_HEADER ObjectHeader = (PKSIOBJECT_HEADER)Header;
|
||||
|
||||
/* return access mask */
|
||||
return ObjectHeader->AccessMask;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -402,7 +405,7 @@ KsSetPowerDispatch(
|
|||
|
||||
|
||||
/*
|
||||
@unimplemented
|
||||
@implemented
|
||||
*/
|
||||
KSDDKAPI
|
||||
PKSOBJECT_CREATE_ITEM
|
||||
|
@ -410,8 +413,8 @@ NTAPI
|
|||
KsQueryObjectCreateItem(
|
||||
IN KSOBJECT_HEADER Header)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return NULL;
|
||||
PKSIOBJECT_HEADER ObjectHeader = (PKSIOBJECT_HEADER)Header;
|
||||
return ObjectHeader->OriginalCreateItem;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
|
@ -649,6 +652,13 @@ KsAllocateObjectHeader(
|
|||
/* store parent device */
|
||||
ObjectHeader->ParentDeviceObject = IoGetRelatedDeviceObject(IoStack->FileObject);
|
||||
|
||||
/* store originating create item */
|
||||
ObjectHeader->OriginalCreateItem = KSCREATE_ITEM_IRP_STORAGE(Irp);
|
||||
|
||||
/* FIXME store access mask see KsQueryObjectAccessMask */
|
||||
ObjectHeader->AccessMask = IoStack->Parameters.Create.SecurityContext->DesiredAccess;
|
||||
|
||||
|
||||
/* store result */
|
||||
*Header = ObjectHeader;
|
||||
|
||||
|
@ -1145,3 +1155,4 @@ KsCacheMedium(
|
|||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -830,10 +830,8 @@ KsReleaseIrpOnCancelableQueue(
|
|||
/* get current irp stack */
|
||||
IoStack = IoGetCurrentIrpStackLocation(Irp);
|
||||
|
||||
/* get internal queue lock
|
||||
* see KsAddIrpToCancelableQueue
|
||||
*/
|
||||
SpinLock = (PKSPIN_LOCK)Irp->Tail.Overlay.DeviceQueueEntry.DeviceListEntry.Flink;
|
||||
/* get internal queue lock */
|
||||
SpinLock = KSQUEUE_SPINLOCK_IRP_STORAGE(Irp);
|
||||
|
||||
/* acquire spinlock */
|
||||
KeAcquireSpinLock(SpinLock, &OldLevel);
|
||||
|
@ -993,10 +991,8 @@ KsRemoveSpecificIrpFromCancelableQueue(
|
|||
PKSPIN_LOCK SpinLock;
|
||||
KIRQL OldLevel;
|
||||
|
||||
/* get internal queue lock
|
||||
* see KsAddIrpToCancelableQueue
|
||||
*/
|
||||
SpinLock = (PKSPIN_LOCK)Irp->Tail.Overlay.DeviceQueueEntry.DeviceListEntry.Flink;
|
||||
/* get internal queue lock */
|
||||
SpinLock = KSQUEUE_SPINLOCK_IRP_STORAGE(Irp);
|
||||
|
||||
/* acquire spinlock */
|
||||
KeAcquireSpinLock(SpinLock, &OldLevel);
|
||||
|
@ -1053,11 +1049,8 @@ KsAddIrpToCancelableQueue(
|
|||
InsertHeadList(QueueHead, &Irp->Tail.Overlay.ListEntry);
|
||||
}
|
||||
|
||||
/* store the spinlock in the device queue list entry,
|
||||
* as other fields may have been internally been used
|
||||
* used in KsCancelRoutine
|
||||
*/
|
||||
Irp->Tail.Overlay.DeviceQueueEntry.DeviceListEntry.Flink = (PLIST_ENTRY)SpinLock;
|
||||
/* store internal queue lock */
|
||||
KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) = SpinLock;
|
||||
|
||||
/* now set the cancel routine */
|
||||
OldDriverCancel = IoSetCancelRoutine(Irp, DriverCancel);
|
||||
|
@ -1093,10 +1086,8 @@ KsCancelRoutine(
|
|||
PKSPIN_LOCK SpinLock;
|
||||
KIRQL OldLevel;
|
||||
|
||||
/* get internal queue lock
|
||||
* see KsAddIrpToCancelableQueue
|
||||
*/
|
||||
SpinLock = (PKSPIN_LOCK)Irp->Tail.Overlay.DeviceQueueEntry.DeviceListEntry.Flink;
|
||||
/* get internal queue lock */
|
||||
SpinLock = KSQUEUE_SPINLOCK_IRP_STORAGE(Irp);
|
||||
|
||||
/* acquire spinlock */
|
||||
KeAcquireSpinLock(SpinLock, &OldLevel);
|
||||
|
|
|
@ -20,6 +20,8 @@ typedef struct
|
|||
PFNKSCONTEXT_DISPATCH PowerDispatch;
|
||||
PVOID PowerContext;
|
||||
LIST_ENTRY PowerDispatchEntry;
|
||||
PKSOBJECT_CREATE_ITEM OriginalCreateItem;
|
||||
ACCESS_MASK AccessMask;
|
||||
|
||||
}KSIOBJECT_HEADER, *PKSIOBJECT_HEADER;
|
||||
|
||||
|
|
Loading…
Reference in a new issue