Stack = IoGetNextIrpStackLocation(Irp);
Stack->FileObject = FileObject;
- Status = IofCallDriver(DeviceObject, Irp);
+ Status = IoCallDriver(DeviceObject, Irp);
if (Status == STATUS_PENDING)
{
KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
}
Cleanup:
- ObfDereferenceObject(DeviceObject);
- ObfDereferenceObject(FileObject);
+ ObDereferenceObject(DeviceObject);
+ ObDereferenceObject(FileObject);
return;
}
/* First, send the notification */
SendOnlineNotification(&(WorkItem->SymbolicName));
- OldIrql = KfAcquireSpinLock(&(DeviceExtension->WorkerLock));
+ KeAcquireSpinLock(&(DeviceExtension->WorkerLock), &OldIrql);
/* If there are no notifications running any longer, reset event */
if (--DeviceExtension->OnlineNotificationCount == 0)
{
/* Queue a new one for execution */
Head = RemoveHeadList(&(DeviceExtension->OnlineNotificationListHead));
NewWorkItem = CONTAINING_RECORD(Head, ONLINE_NOTIFICATION_WORK_ITEM, List);
- KfReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
+ KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
NewWorkItem->List.Blink = NULL;
NewWorkItem->List.Flink = NULL;
ExQueueWorkItem((PWORK_QUEUE_ITEM)NewWorkItem, DelayedWorkQueue);
{
/* Mark it's over */
DeviceExtension->OnlineNotificationWorkerActive = 0;
- KfReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
+ KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
}
FreePool(WorkItem->SymbolicName.Buffer);
RtlCopyMemory(WorkItem->SymbolicName.Buffer, SymbolicName->Buffer, SymbolicName->Length);
WorkItem->SymbolicName.Buffer[SymbolicName->Length / sizeof(WCHAR)] = UNICODE_NULL;
- OldIrql = KfAcquireSpinLock(&(DeviceExtension->WorkerLock));
+ KeAcquireSpinLock(&(DeviceExtension->WorkerLock), &OldIrql);
DeviceExtension->OnlineNotificationCount++;
/* If no worker are active */
if (DeviceExtension->OnlineNotificationWorkerActive == 0)
{
/* Queue that one for execution */
- DeviceExtension->OnlineNotificationWorkerActive == 1;
+ DeviceExtension->OnlineNotificationWorkerActive = 1;
ExQueueWorkItem((PWORK_QUEUE_ITEM)WorkItem, DelayedWorkQueue);
}
else
InsertTailList(&(DeviceExtension->OnlineNotificationListHead), &(WorkItem->List));
}
- KfReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
+ KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
return;
}
KeInitializeEvent(&(DeviceExtension->OnlineNotificationEvent), NotificationEvent, FALSE);
- OldIrql = KfAcquireSpinLock(&(DeviceExtension->WorkerLock));
+ KeAcquireSpinLock(&(DeviceExtension->WorkerLock), &OldIrql);
/* Just wait all the worker are done */
if (DeviceExtension->OnlineNotificationCount != 1)
{
DeviceExtension->OnlineNotificationCount--;
- KfReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
+ KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
KeWaitForSingleObject(&(DeviceExtension->OnlineNotificationEvent),
Executive,
FALSE,
NULL);
- OldIrql = KfAcquireSpinLock(&(DeviceExtension->WorkerLock));
+ KeAcquireSpinLock(&(DeviceExtension->WorkerLock), &OldIrql);
DeviceExtension->OnlineNotificationCount++;
}
- KfReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
+ KeReleaseSpinLock(&(DeviceExtension->WorkerLock), OldIrql);
}
/*
DeviceInformation->TargetDeviceNotificationEntry = NULL;
}
- ObfDereferenceObject(FileObject);
+ ObDereferenceObject(FileObject);
return;
}
*((PULONG)Irp->AssociatedIrp.SystemBuffer) = DeviceExtension->EpicNumber;
Irp->IoStatus.Information = sizeof(DeviceExtension->EpicNumber);
- IofCompleteRequest(Irp, IO_NO_INCREMENT);
+ IoCompleteRequest(Irp, IO_NO_INCREMENT);
}
}
&IoStatusBlock);
if (!Irp)
{
- ObfDereferenceObject(DeviceObject);
- ObfDereferenceObject(FileObject);
+ ObDereferenceObject(DeviceObject);
+ ObDereferenceObject(FileObject);
}
Stack = IoGetNextIrpStackLocation(Irp);
Stack->FileObject = FileObject;
/* And call driver */
- Status = IofCallDriver(DeviceObject, Irp);
+ Status = IoCallDriver(DeviceObject, Irp);
if (Status == STATUS_PENDING)
{
KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
Status = IoStatusBlock.Status;
}
- ObfDereferenceObject(DeviceObject);
- ObfDereferenceObject(FileObject);
+ ObDereferenceObject(DeviceObject);
+ ObDereferenceObject(FileObject);
if (!NT_SUCCESS(Status))
{
&DeviceNotification,
NULL, NULL);
- ObfDereferenceObject(DeviceObject);
+ ObDereferenceObject(DeviceObject);
return;
}
VOID
RemoveWorkItem(IN PUNIQUE_ID_WORK_ITEM WorkItem)
{
- PDEVICE_EXTENSION DeviceExtension;
+ PDEVICE_EXTENSION DeviceExtension = WorkItem->DeviceExtension;
KeWaitForSingleObject(&(DeviceExtension->DeviceLock), Executive, KernelMode, FALSE, NULL);
PMOUNTDEV_UNIQUE_ID OldUniqueId, NewUniqueId;
PMOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT UniqueIdChange;
+ UNREFERENCED_PARAMETER(DeviceObject);
+
/* Validate worker */
if (!NT_SUCCESS(WorkItem->Irp->IoStatus.Status))
{
{
PUNIQUE_ID_WORK_ITEM WorkItem = Context;
+ UNREFERENCED_PARAMETER(DeviceObject);
+ UNREFERENCED_PARAMETER(Irp);
+
/* Simply queue the work item */
IoQueueWorkItem(WorkItem->WorkItem,
UniqueIdChangeNotifyWorker,
/* Initialize the IRP */
Irp = WorkItem->Irp;
- IoInitializeIrp(Irp, IoSizeOfIrp(WorkItem->StackSize), WorkItem->StackSize);
+ IoInitializeIrp(Irp, IoSizeOfIrp(WorkItem->StackSize), (CCHAR)WorkItem->StackSize);
if (InterlockedExchange((PLONG)&(WorkItem->Event), 0) != 0)
{
- ObfDereferenceObject(FileObject);
- ObfDereferenceObject(DeviceObject);
+ ObDereferenceObject(FileObject);
+ ObDereferenceObject(DeviceObject);
RemoveWorkItem(WorkItem);
return;
}
TRUE, TRUE, TRUE);
if (!NT_SUCCESS(Status))
{
- ObfDereferenceObject(FileObject);
- ObfDereferenceObject(DeviceObject);
+ ObDereferenceObject(FileObject);
+ ObDereferenceObject(DeviceObject);
RemoveWorkItem(WorkItem);
return;
}
/* Call the driver */
- IofCallDriver(DeviceObject, Irp);
- ObfDereferenceObject(FileObject);
- ObfDereferenceObject(DeviceObject);
+ IoCallDriver(DeviceObject, Irp);
+ ObDereferenceObject(FileObject);
+ ObDereferenceObject(DeviceObject);
}
/*
/* And then, get attached device */
DeviceObject = IoGetAttachedDeviceReference(FileObject->DeviceObject);
- ObfDereferenceObject(FileObject);
+ ObDereferenceObject(FileObject);
/* Allocate a work item */
WorkItem = AllocatePool(sizeof(UNIQUE_ID_WORK_ITEM));
if (!WorkItem)
{
- ObfDereferenceObject(DeviceObject);
+ ObDereferenceObject(DeviceObject);
return;
}
WorkItem->WorkItem = IoAllocateWorkItem(DeviceExtension->DeviceObject);
if (!WorkItem->WorkItem)
{
- ObfDereferenceObject(DeviceObject);
+ ObDereferenceObject(DeviceObject);
goto Cleanup;
}
/* Already provide the IRP */
WorkItem->Irp = IoAllocateIrp(DeviceObject->StackSize, FALSE);
- ObfDereferenceObject(DeviceObject);
+ ObDereferenceObject(DeviceObject);
if (!WorkItem->Irp)
{