mirror of
https://github.com/reactos/reactos.git
synced 2024-10-05 08:54:40 +00:00
[PO]
- Don't mess with the device interface string - Fixes receiving power button events - The "ACPI Shutdown" option in the VirtualBox menu works now svn path=/trunk/; revision=53351
This commit is contained in:
parent
ea045872b7
commit
607064163c
|
@ -166,8 +166,6 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
BOOLEAN Arrival;
|
BOOLEAN Arrival;
|
||||||
ULONG Caps;
|
ULONG Caps;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
UNICODE_STRING DeviceName;
|
|
||||||
UNICODE_STRING DeviceNamePrefix = RTL_CONSTANT_STRING(L"\\??\\");
|
|
||||||
|
|
||||||
DPRINT("PopAddRemoveSysCapsCallback(%p %p)\n",
|
DPRINT("PopAddRemoveSysCapsCallback(%p %p)\n",
|
||||||
NotificationStructure, Context);
|
NotificationStructure, Context);
|
||||||
|
@ -188,20 +186,10 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
{
|
{
|
||||||
DPRINT("Arrival of %wZ\n", Notification->SymbolicLinkName);
|
DPRINT("Arrival of %wZ\n", Notification->SymbolicLinkName);
|
||||||
|
|
||||||
DeviceName.Length = 0;
|
|
||||||
DeviceName.MaximumLength = Notification->SymbolicLinkName->MaximumLength + DeviceNamePrefix.MaximumLength;
|
|
||||||
DeviceName.Buffer = ExAllocatePool(PagedPool, DeviceName.MaximumLength);
|
|
||||||
if (!DeviceName.Buffer) return STATUS_INSUFFICIENT_RESOURCES;
|
|
||||||
|
|
||||||
RtlCopyUnicodeString(&DeviceName, &DeviceNamePrefix);
|
|
||||||
RtlAppendUnicodeStringToString(&DeviceName, Notification->SymbolicLinkName);
|
|
||||||
|
|
||||||
DPRINT("Opening handle to %wZ\n", &DeviceName);
|
|
||||||
|
|
||||||
/* Open the device */
|
/* Open the device */
|
||||||
InitializeObjectAttributes(
|
InitializeObjectAttributes(
|
||||||
&ObjectAttributes,
|
&ObjectAttributes,
|
||||||
&DeviceName,
|
Notification->SymbolicLinkName,
|
||||||
OBJ_KERNEL_HANDLE,
|
OBJ_KERNEL_HANDLE,
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -214,7 +202,7 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
0);
|
0);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT("ZwOpenFile() failed with status 0x%08lx\n", Status);
|
DPRINT1("ZwOpenFile() failed with status 0x%08lx\n", Status);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
Status = ObReferenceObjectByHandle(
|
Status = ObReferenceObjectByHandle(
|
||||||
|
@ -226,7 +214,7 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
NULL);
|
NULL);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT("ObReferenceObjectByHandle() failed with status 0x%08lx\n", Status);
|
DPRINT1("ObReferenceObjectByHandle() failed with status 0x%08lx\n", Status);
|
||||||
ZwClose(FileHandle);
|
ZwClose(FileHandle);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -247,7 +235,7 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
&IoStatusBlock);
|
&IoStatusBlock);
|
||||||
if (!Irp)
|
if (!Irp)
|
||||||
{
|
{
|
||||||
DPRINT("IoBuildDeviceIoControlRequest() failed\n");
|
DPRINT1("IoBuildDeviceIoControlRequest() failed\n");
|
||||||
ZwClose(FileHandle);
|
ZwClose(FileHandle);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
@ -260,7 +248,7 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
}
|
}
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT("Sending IOCTL_GET_SYS_BUTTON_CAPS failed with status 0x%08x\n", Status);
|
DPRINT1("Sending IOCTL_GET_SYS_BUTTON_CAPS failed with status 0x%08x\n", Status);
|
||||||
ZwClose(FileHandle);
|
ZwClose(FileHandle);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
@ -277,7 +265,7 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
SysButtonContext = ExAllocatePool(NonPagedPool, sizeof(SYS_BUTTON_CONTEXT));
|
SysButtonContext = ExAllocatePool(NonPagedPool, sizeof(SYS_BUTTON_CONTEXT));
|
||||||
if (!SysButtonContext)
|
if (!SysButtonContext)
|
||||||
{
|
{
|
||||||
DPRINT("ExAllocatePool() failed\n");
|
DPRINT1("ExAllocatePool() failed\n");
|
||||||
ZwClose(FileHandle);
|
ZwClose(FileHandle);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
@ -287,7 +275,7 @@ PopAddRemoveSysCapsCallback(IN PVOID NotificationStructure,
|
||||||
SysButtonContext->DeviceObject = DeviceObject;
|
SysButtonContext->DeviceObject = DeviceObject;
|
||||||
if (!SysButtonContext->WorkItem)
|
if (!SysButtonContext->WorkItem)
|
||||||
{
|
{
|
||||||
DPRINT("IoAllocateWorkItem() failed\n");
|
DPRINT1("IoAllocateWorkItem() failed\n");
|
||||||
ZwClose(FileHandle);
|
ZwClose(FileHandle);
|
||||||
ExFreePool(SysButtonContext);
|
ExFreePool(SysButtonContext);
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
Loading…
Reference in a new issue