[NTOS:PO]: Whitespace fixes only!

svn path=/trunk/; revision=70535
This commit is contained in:
Hermès Bélusca-Maïto 2016-01-07 20:00:05 +00:00
parent d5691eba70
commit 63025d14ef
2 changed files with 199 additions and 207 deletions

View file

@ -16,18 +16,18 @@
typedef struct _SYS_BUTTON_CONTEXT
{
PDEVICE_OBJECT DeviceObject;
PIO_WORKITEM WorkItem;
KEVENT Event;
IO_STATUS_BLOCK IoStatusBlock;
ULONG SysButton;
PDEVICE_OBJECT DeviceObject;
PIO_WORKITEM WorkItem;
KEVENT Event;
IO_STATUS_BLOCK IoStatusBlock;
ULONG SysButton;
} SYS_BUTTON_CONTEXT, *PSYS_BUTTON_CONTEXT;
static VOID
NTAPI
PopGetSysButton(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context);
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context);
PKWIN32_POWEREVENT_CALLOUT PopEventCallout;
extern PCALLBACK_OBJECT SetSystemTimeCallback;
@ -57,25 +57,25 @@ PoNotifySystemTimeSet(VOID)
static NTSTATUS
NTAPI
PopGetSysButtonCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context)
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context)
{
PSYS_BUTTON_CONTEXT SysButtonContext = Context;
ULONG SysButton;
PSYS_BUTTON_CONTEXT SysButtonContext = Context;
ULONG SysButton;
/* The DeviceObject can be NULL, so use the one we stored */
DeviceObject = SysButtonContext->DeviceObject;
/* The DeviceObject can be NULL, so use the one we stored */
DeviceObject = SysButtonContext->DeviceObject;
/* FIXME: What do do with the sys button event? */
SysButton = *(PULONG)Irp->AssociatedIrp.SystemBuffer;
{
DPRINT1("A device reported the event 0x%x (", SysButton);
if (SysButton & SYS_BUTTON_POWER) DbgPrint(" POWER");
if (SysButton & SYS_BUTTON_SLEEP) DbgPrint(" SLEEP");
if (SysButton & SYS_BUTTON_LID) DbgPrint(" LID");
if (SysButton == 0) DbgPrint(" WAKE");
DbgPrint(" )\n");
/* FIXME: What do do with the sys button event? */
SysButton = *(PULONG)Irp->AssociatedIrp.SystemBuffer;
{
DPRINT1("A device reported the event 0x%x (", SysButton);
if (SysButton & SYS_BUTTON_POWER) DbgPrint(" POWER");
if (SysButton & SYS_BUTTON_SLEEP) DbgPrint(" SLEEP");
if (SysButton & SYS_BUTTON_LID) DbgPrint(" LID");
if (SysButton == 0) DbgPrint(" WAKE");
DbgPrint(" )\n");
if (SysButton & SYS_BUTTON_POWER)
{
@ -84,65 +84,62 @@ PopGetSysButtonCompletion(
ZwShutdownSystem(ShutdownNoReboot);
}
}
}
/* Allocate a new workitem to send the next IOCTL_GET_SYS_BUTTON_EVENT */
SysButtonContext->WorkItem = IoAllocateWorkItem(DeviceObject);
if (!SysButtonContext->WorkItem)
{
DPRINT("IoAllocateWorkItem() failed\n");
ExFreePoolWithTag(SysButtonContext, 'IWOP');
return STATUS_SUCCESS;
}
IoQueueWorkItem(
SysButtonContext->WorkItem,
PopGetSysButton,
DelayedWorkQueue,
SysButtonContext);
/* Allocate a new workitem to send the next IOCTL_GET_SYS_BUTTON_EVENT */
SysButtonContext->WorkItem = IoAllocateWorkItem(DeviceObject);
if (!SysButtonContext->WorkItem)
{
DPRINT("IoAllocateWorkItem() failed\n");
ExFreePoolWithTag(SysButtonContext, 'IWOP');
return STATUS_SUCCESS;
}
IoQueueWorkItem(SysButtonContext->WorkItem,
PopGetSysButton,
DelayedWorkQueue,
SysButtonContext);
return STATUS_SUCCESS /* STATUS_CONTINUE_COMPLETION */;
return STATUS_SUCCESS /* STATUS_CONTINUE_COMPLETION */;
}
static VOID
NTAPI
PopGetSysButton(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context)
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context)
{
PSYS_BUTTON_CONTEXT SysButtonContext = Context;
PIO_WORKITEM CurrentWorkItem = SysButtonContext->WorkItem;
PIRP Irp;
PSYS_BUTTON_CONTEXT SysButtonContext = Context;
PIO_WORKITEM CurrentWorkItem = SysButtonContext->WorkItem;
PIRP Irp;
/* Get button pressed (IOCTL_GET_SYS_BUTTON_EVENT) */
KeInitializeEvent(&SysButtonContext->Event, NotificationEvent, FALSE);
Irp = IoBuildDeviceIoControlRequest(
IOCTL_GET_SYS_BUTTON_EVENT,
DeviceObject,
NULL,
0,
&SysButtonContext->SysButton,
sizeof(SysButtonContext->SysButton),
FALSE,
&SysButtonContext->Event,
&SysButtonContext->IoStatusBlock);
if (Irp)
{
IoSetCompletionRoutine(
Irp,
PopGetSysButtonCompletion,
SysButtonContext,
TRUE,
FALSE,
FALSE);
IoCallDriver(DeviceObject, Irp);
}
else
{
DPRINT1("IoBuildDeviceIoControlRequest() failed\n");
ExFreePoolWithTag(SysButtonContext, 'IWOP');
}
/* Get button pressed (IOCTL_GET_SYS_BUTTON_EVENT) */
KeInitializeEvent(&SysButtonContext->Event, NotificationEvent, FALSE);
Irp = IoBuildDeviceIoControlRequest(IOCTL_GET_SYS_BUTTON_EVENT,
DeviceObject,
NULL,
0,
&SysButtonContext->SysButton,
sizeof(SysButtonContext->SysButton),
FALSE,
&SysButtonContext->Event,
&SysButtonContext->IoStatusBlock);
if (Irp)
{
IoSetCompletionRoutine(Irp,
PopGetSysButtonCompletion,
SysButtonContext,
TRUE,
FALSE,
FALSE);
IoCallDriver(DeviceObject, Irp);
}
else
{
DPRINT1("IoBuildDeviceIoControlRequest() failed\n");
ExFreePoolWithTag(SysButtonContext, 'IWOP');
}
IoFreeWorkItem(CurrentWorkItem);
IoFreeWorkItem(CurrentWorkItem);
}
NTSTATUS
@ -150,146 +147,141 @@ NTAPI
PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
IN PVOID Context)
{
PDEVICE_INTERFACE_CHANGE_NOTIFICATION Notification;
PSYS_BUTTON_CONTEXT SysButtonContext;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE FileHandle;
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;
PIRP Irp;
IO_STATUS_BLOCK IoStatusBlock;
KEVENT Event;
BOOLEAN Arrival;
ULONG Caps;
NTSTATUS Status;
PDEVICE_INTERFACE_CHANGE_NOTIFICATION Notification;
PSYS_BUTTON_CONTEXT SysButtonContext;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE FileHandle;
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;
PIRP Irp;
IO_STATUS_BLOCK IoStatusBlock;
KEVENT Event;
BOOLEAN Arrival;
ULONG Caps;
NTSTATUS Status;
DPRINT("PopAddRemoveSysCapsCallback(%p %p)\n",
NotificationStructure, Context);
DPRINT("PopAddRemoveSysCapsCallback(%p %p)\n",
NotificationStructure, Context);
Notification = (PDEVICE_INTERFACE_CHANGE_NOTIFICATION)NotificationStructure;
if (Notification->Version != 1)
return STATUS_REVISION_MISMATCH;
if (Notification->Size != sizeof(DEVICE_INTERFACE_CHANGE_NOTIFICATION))
return STATUS_INVALID_PARAMETER;
if (RtlCompareMemory(&Notification->Event, &GUID_DEVICE_INTERFACE_ARRIVAL, sizeof(GUID)) == sizeof(GUID))
Arrival = TRUE;
else if (RtlCompareMemory(&Notification->Event, &GUID_DEVICE_INTERFACE_REMOVAL, sizeof(GUID)) == sizeof(GUID))
Arrival = FALSE;
else
return STATUS_INVALID_PARAMETER;
Notification = (PDEVICE_INTERFACE_CHANGE_NOTIFICATION)NotificationStructure;
if (Notification->Version != 1)
return STATUS_REVISION_MISMATCH;
if (Notification->Size != sizeof(DEVICE_INTERFACE_CHANGE_NOTIFICATION))
return STATUS_INVALID_PARAMETER;
if (RtlCompareMemory(&Notification->Event, &GUID_DEVICE_INTERFACE_ARRIVAL, sizeof(GUID)) == sizeof(GUID))
Arrival = TRUE;
else if (RtlCompareMemory(&Notification->Event, &GUID_DEVICE_INTERFACE_REMOVAL, sizeof(GUID)) == sizeof(GUID))
Arrival = FALSE;
else
return STATUS_INVALID_PARAMETER;
if (Arrival)
{
DPRINT("Arrival of %wZ\n", Notification->SymbolicLinkName);
if (Arrival)
{
DPRINT("Arrival of %wZ\n", Notification->SymbolicLinkName);
/* Open the device */
InitializeObjectAttributes(
&ObjectAttributes,
Notification->SymbolicLinkName,
OBJ_KERNEL_HANDLE,
NULL,
NULL);
Status = ZwOpenFile(
&FileHandle,
FILE_READ_DATA,
&ObjectAttributes,
&IoStatusBlock,
FILE_SHARE_READ | FILE_SHARE_WRITE,
0);
if (!NT_SUCCESS(Status))
{
DPRINT1("ZwOpenFile() failed with status 0x%08lx\n", Status);
return Status;
}
Status = ObReferenceObjectByHandle(
FileHandle,
FILE_READ_DATA,
IoFileObjectType,
KernelMode,
(PVOID*)&FileObject,
NULL);
if (!NT_SUCCESS(Status))
{
DPRINT1("ObReferenceObjectByHandle() failed with status 0x%08lx\n", Status);
ZwClose(FileHandle);
return Status;
}
DeviceObject = IoGetRelatedDeviceObject(FileObject);
ObDereferenceObject(FileObject);
/* Open the device */
InitializeObjectAttributes(&ObjectAttributes,
Notification->SymbolicLinkName,
OBJ_KERNEL_HANDLE,
NULL,
NULL);
Status = ZwOpenFile(&FileHandle,
FILE_READ_DATA,
&ObjectAttributes,
&IoStatusBlock,
FILE_SHARE_READ | FILE_SHARE_WRITE,
0);
if (!NT_SUCCESS(Status))
{
DPRINT1("ZwOpenFile() failed with status 0x%08lx\n", Status);
return Status;
}
Status = ObReferenceObjectByHandle(FileHandle,
FILE_READ_DATA,
IoFileObjectType,
KernelMode,
(PVOID*)&FileObject,
NULL);
if (!NT_SUCCESS(Status))
{
DPRINT1("ObReferenceObjectByHandle() failed with status 0x%08lx\n", Status);
ZwClose(FileHandle);
return Status;
}
DeviceObject = IoGetRelatedDeviceObject(FileObject);
ObDereferenceObject(FileObject);
/* Get capabilities (IOCTL_GET_SYS_BUTTON_CAPS) */
KeInitializeEvent(&Event, NotificationEvent, FALSE);
Irp = IoBuildDeviceIoControlRequest(
IOCTL_GET_SYS_BUTTON_CAPS,
DeviceObject,
NULL,
0,
&Caps,
sizeof(Caps),
FALSE,
&Event,
&IoStatusBlock);
if (!Irp)
{
DPRINT1("IoBuildDeviceIoControlRequest() failed\n");
ZwClose(FileHandle);
return STATUS_INSUFFICIENT_RESOURCES;
}
Status = IoCallDriver(DeviceObject, Irp);
if (Status == STATUS_PENDING)
{
DPRINT("IOCTL_GET_SYS_BUTTON_CAPS pending\n");
KeWaitForSingleObject(&Event, Suspended, KernelMode, FALSE, NULL);
Status = IoStatusBlock.Status;
}
if (!NT_SUCCESS(Status))
{
DPRINT1("Sending IOCTL_GET_SYS_BUTTON_CAPS failed with status 0x%08x\n", Status);
ZwClose(FileHandle);
return STATUS_INSUFFICIENT_RESOURCES;
}
/* Get capabilities (IOCTL_GET_SYS_BUTTON_CAPS) */
KeInitializeEvent(&Event, NotificationEvent, FALSE);
Irp = IoBuildDeviceIoControlRequest(IOCTL_GET_SYS_BUTTON_CAPS,
DeviceObject,
NULL,
0,
&Caps,
sizeof(Caps),
FALSE,
&Event,
&IoStatusBlock);
if (!Irp)
{
DPRINT1("IoBuildDeviceIoControlRequest() failed\n");
ZwClose(FileHandle);
return STATUS_INSUFFICIENT_RESOURCES;
}
Status = IoCallDriver(DeviceObject, Irp);
if (Status == STATUS_PENDING)
{
DPRINT("IOCTL_GET_SYS_BUTTON_CAPS pending\n");
KeWaitForSingleObject(&Event, Suspended, KernelMode, FALSE, NULL);
Status = IoStatusBlock.Status;
}
if (!NT_SUCCESS(Status))
{
DPRINT1("Sending IOCTL_GET_SYS_BUTTON_CAPS failed with status 0x%08x\n", Status);
ZwClose(FileHandle);
return STATUS_INSUFFICIENT_RESOURCES;
}
/* FIXME: What do do with the capabilities? */
{
DPRINT("Device capabilities: 0x%x (", Caps);
if (Caps & SYS_BUTTON_POWER) DPRINT(" POWER");
if (Caps & SYS_BUTTON_SLEEP) DPRINT(" SLEEP");
if (Caps & SYS_BUTTON_LID) DPRINT(" LID");
DPRINT(" )\n");
}
/* FIXME: What do do with the capabilities? */
{
DPRINT("Device capabilities: 0x%x (", Caps);
if (Caps & SYS_BUTTON_POWER) DPRINT(" POWER");
if (Caps & SYS_BUTTON_SLEEP) DPRINT(" SLEEP");
if (Caps & SYS_BUTTON_LID) DPRINT(" LID");
DPRINT(" )\n");
}
SysButtonContext = ExAllocatePoolWithTag(NonPagedPool,
SysButtonContext = ExAllocatePoolWithTag(NonPagedPool,
sizeof(SYS_BUTTON_CONTEXT),
'IWOP');
if (!SysButtonContext)
{
DPRINT1("ExAllocatePoolWithTag() failed\n");
ZwClose(FileHandle);
return STATUS_INSUFFICIENT_RESOURCES;
}
if (!SysButtonContext)
{
DPRINT1("ExAllocatePoolWithTag() failed\n");
ZwClose(FileHandle);
return STATUS_INSUFFICIENT_RESOURCES;
}
/* Queue a work item to get sys button event */
SysButtonContext->WorkItem = IoAllocateWorkItem(DeviceObject);
SysButtonContext->DeviceObject = DeviceObject;
if (!SysButtonContext->WorkItem)
{
DPRINT1("IoAllocateWorkItem() failed\n");
ZwClose(FileHandle);
ExFreePoolWithTag(SysButtonContext, 'IWOP');
return STATUS_INSUFFICIENT_RESOURCES;
}
IoQueueWorkItem(
SysButtonContext->WorkItem,
PopGetSysButton,
DelayedWorkQueue,
SysButtonContext);
/* Queue a work item to get sys button event */
SysButtonContext->WorkItem = IoAllocateWorkItem(DeviceObject);
SysButtonContext->DeviceObject = DeviceObject;
if (!SysButtonContext->WorkItem)
{
DPRINT1("IoAllocateWorkItem() failed\n");
ZwClose(FileHandle);
ExFreePoolWithTag(SysButtonContext, 'IWOP');
return STATUS_INSUFFICIENT_RESOURCES;
}
IoQueueWorkItem(SysButtonContext->WorkItem,
PopGetSysButton,
DelayedWorkQueue,
SysButtonContext);
ZwClose(FileHandle);
return STATUS_SUCCESS;
}
else
{
DPRINT1("Removal of a power capable device not implemented\n");
return STATUS_NOT_IMPLEMENTED;
}
ZwClose(FileHandle);
return STATUS_SUCCESS;
}
else
{
DPRINT1("Removal of a power capable device not implemented\n");
return STATUS_NOT_IMPLEMENTED;
}
}

View file

@ -622,10 +622,10 @@ PoUnregisterSystemState(IN PVOID StateHandle)
*/
NTSTATUS
NTAPI
NtInitiatePowerAction (IN POWER_ACTION SystemAction,
IN SYSTEM_POWER_STATE MinSystemState,
IN ULONG Flags,
IN BOOLEAN Asynchronous)
NtInitiatePowerAction(IN POWER_ACTION SystemAction,
IN SYSTEM_POWER_STATE MinSystemState,
IN ULONG Flags,
IN BOOLEAN Asynchronous)
{
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;