+ case ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATURE:
+ SimpleInt = Irp->AssociatedIrp.SystemBuffer;
+
+ if (IrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof(ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER))
+ return STATUS_INVALID_PARAMETER;
+
+ ParamList.Count = 1;
+
+ ParamList.Pointer = ExAllocatePool(NonPagedPool, sizeof(ACPI_OBJECT));
+ if (!ParamList.Pointer) return STATUS_INSUFFICIENT_RESOURCES;
+
+ ParamList.Pointer[0].Type = ACPI_TYPE_INTEGER;
+ ParamList.Pointer[0].Integer.Value = SimpleInt->IntegerArgument;
+ break;
+
+ case ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_SIGNATURE:
+ SimpleStr = Irp->AssociatedIrp.SystemBuffer;
+
+ if (IrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof(ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING))
+ return STATUS_INVALID_PARAMETER;
+
+ ParamList.Count = 1;
+
+ ParamList.Pointer = ExAllocatePool(NonPagedPool, sizeof(ACPI_OBJECT));
+ if (!ParamList.Pointer) return STATUS_INSUFFICIENT_RESOURCES;
+
+ ParamList.Pointer[0].String.Pointer = (CHAR*)SimpleStr->String;
+ ParamList.Pointer[0].String.Length = SimpleStr->StringLength;
+ break;