From 77b88b38af7f8bbdda7d87402cf96ef1bc494bcb Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 26 Feb 2017 18:57:28 +0000 Subject: [PATCH] [PROCESSR] Add a generic processor driver that does nothing but provide a proper CPU device name (FriendlyName) to the registry. CORE-5960 #resolve svn path=/trunk/; revision=73967 --- reactos/drivers/CMakeLists.txt | 1 + reactos/drivers/processor/CMakeLists.txt | 2 + .../drivers/processor/processr/CMakeLists.txt | 12 + reactos/drivers/processor/processr/misc.c | 81 ++++ reactos/drivers/processor/processr/pnp.c | 402 ++++++++++++++++++ reactos/drivers/processor/processr/processr.c | 65 +++ reactos/drivers/processor/processr/processr.h | 51 +++ .../drivers/processor/processr/processr.rc | 13 + reactos/media/inf/cpu.inf | 129 +++--- 9 files changed, 704 insertions(+), 52 deletions(-) create mode 100644 reactos/drivers/processor/CMakeLists.txt create mode 100644 reactos/drivers/processor/processr/CMakeLists.txt create mode 100644 reactos/drivers/processor/processr/misc.c create mode 100644 reactos/drivers/processor/processr/pnp.c create mode 100644 reactos/drivers/processor/processr/processr.c create mode 100644 reactos/drivers/processor/processr/processr.h create mode 100644 reactos/drivers/processor/processr/processr.rc diff --git a/reactos/drivers/CMakeLists.txt b/reactos/drivers/CMakeLists.txt index 8b417a68aa5..24f78415e82 100644 --- a/reactos/drivers/CMakeLists.txt +++ b/reactos/drivers/CMakeLists.txt @@ -14,6 +14,7 @@ add_subdirectory(input) add_subdirectory(ksfilter) add_subdirectory(network) add_subdirectory(parallel) +add_subdirectory(processor) add_subdirectory(sac) add_subdirectory(serial) add_subdirectory(setup) diff --git a/reactos/drivers/processor/CMakeLists.txt b/reactos/drivers/processor/CMakeLists.txt new file mode 100644 index 00000000000..f435ef2110e --- /dev/null +++ b/reactos/drivers/processor/CMakeLists.txt @@ -0,0 +1,2 @@ + +add_subdirectory(processr) diff --git a/reactos/drivers/processor/processr/CMakeLists.txt b/reactos/drivers/processor/processr/CMakeLists.txt new file mode 100644 index 00000000000..e034231b056 --- /dev/null +++ b/reactos/drivers/processor/processr/CMakeLists.txt @@ -0,0 +1,12 @@ + +list(APPEND SOURCE + processr.c + misc.c + pnp.c + processr.h) + +add_library(processr SHARED ${SOURCE} processr.rc) +set_module_type(processr kernelmodedriver) +add_importlibs(processr hal ntoskrnl) +add_pch(processr processr.h SOURCE) +add_cd_file(TARGET processr DESTINATION reactos/system32/drivers FOR all) diff --git a/reactos/drivers/processor/processr/misc.c b/reactos/drivers/processor/processr/misc.c new file mode 100644 index 00000000000..39aa1d6604c --- /dev/null +++ b/reactos/drivers/processor/processr/misc.c @@ -0,0 +1,81 @@ +/* + * PROJECT: ReactOS Generic CPU Driver + * LICENSE: GNU GPLv2 only as published by the Free Software Foundation + * FILE: drivers/processor/processr/misc.c + * PURPOSE: Misc routines + * PROGRAMMERS: Eric Kohl + */ + +/* INCLUDES *******************************************************************/ + +#include "processr.h" + +#define NDEBUG +#include + +/* FUNCTIONS ******************************************************************/ + +static IO_COMPLETION_ROUTINE ForwardIrpAndWaitCompletion; + +static +NTSTATUS +NTAPI +ForwardIrpAndWaitCompletion( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PVOID Context) +{ + if (Irp->PendingReturned) + KeSetEvent((PKEVENT)Context, IO_NO_INCREMENT, FALSE); + + return STATUS_MORE_PROCESSING_REQUIRED; +} + + +NTSTATUS +NTAPI +ForwardIrpAndWait( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PDEVICE_OBJECT LowerDevice; + KEVENT Event; + NTSTATUS Status; + + LowerDevice = ((PDEVICE_EXTENSION)DeviceObject->DeviceExtension)->LowerDevice; + ASSERT(LowerDevice); + + KeInitializeEvent(&Event, NotificationEvent, FALSE); + IoCopyCurrentIrpStackLocationToNext(Irp); + + DPRINT("Calling lower device %p\n", LowerDevice); + IoSetCompletionRoutine(Irp, ForwardIrpAndWaitCompletion, &Event, TRUE, TRUE, TRUE); + + Status = IoCallDriver(LowerDevice, Irp); + if (Status == STATUS_PENDING) + { + Status = KeWaitForSingleObject(&Event, Suspended, KernelMode, FALSE, NULL); + if (NT_SUCCESS(Status)) + Status = Irp->IoStatus.Status; + } + + return Status; +} + + +NTSTATUS +NTAPI +ForwardIrpAndForget( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PDEVICE_OBJECT LowerDevice; + + LowerDevice = ((PDEVICE_EXTENSION)DeviceObject->DeviceExtension)->LowerDevice; + ASSERT(LowerDevice); + + IoSkipCurrentIrpStackLocation(Irp); + return IoCallDriver(LowerDevice, Irp); +} + +/* EOF */ diff --git a/reactos/drivers/processor/processr/pnp.c b/reactos/drivers/processor/processr/pnp.c new file mode 100644 index 00000000000..c7ff13f54b9 --- /dev/null +++ b/reactos/drivers/processor/processr/pnp.c @@ -0,0 +1,402 @@ +/* + * PROJECT: ReactOS Generic CPU Driver + * LICENSE: GNU GPLv2 only as published by the Free Software Foundation + * FILE: drivers/processor/processr/pnp.c + * PURPOSE: Plug N Play routines + * PROGRAMMERS: Eric Kohl + */ + +/* INCLUDES *******************************************************************/ + +#include "processr.h" + +#include +#define NDEBUG +#include + +/* FUNCTIONS ******************************************************************/ + +static +NTSTATUS +GetDeviceId( + PDEVICE_OBJECT DeviceObject, + BUS_QUERY_ID_TYPE IdType, + PWSTR *DeviceId) +{ + PIO_STACK_LOCATION IrpStack; + IO_STATUS_BLOCK IoStatus; + PDEVICE_OBJECT TargetObject; + KEVENT Event; + PIRP Irp; + NTSTATUS Status; + + PAGED_CODE(); + + /* Initialize the event */ + KeInitializeEvent(&Event, NotificationEvent, FALSE); + + TargetObject = IoGetAttachedDeviceReference(DeviceObject); + + /* Build the IRP */ + Irp = IoBuildSynchronousFsdRequest(IRP_MJ_PNP, + TargetObject, + NULL, + 0, + NULL, + &Event, + &IoStatus); + if (Irp == NULL) + { + Status = STATUS_INSUFFICIENT_RESOURCES; + goto done; + } + + /* PNP IRPs all begin life as STATUS_NOT_SUPPORTED */ + Irp->IoStatus.Status = STATUS_NOT_SUPPORTED; + + /* Get the top of stack */ + IrpStack = IoGetNextIrpStackLocation(Irp); + + /* Set the top of stack */ + RtlZeroMemory(IrpStack, sizeof(IO_STACK_LOCATION)); + IrpStack->MajorFunction = IRP_MJ_PNP; + IrpStack->MinorFunction = IRP_MN_QUERY_ID; + IrpStack->Parameters.QueryId.IdType = IdType; + + /* Call the driver */ + Status = IoCallDriver(TargetObject, Irp); + if (Status == STATUS_PENDING) + { + KeWaitForSingleObject(&Event, + Executive, + KernelMode, + FALSE, + NULL); + + Status = IoStatus.Status; + } + + if (NT_SUCCESS(Status)) + { + *DeviceId = (PWSTR)IoStatus.Information; + } + +done: + /* Dereference the target device object */ + ObDereferenceObject(TargetObject); + + return Status; +} + + + +static +VOID +ProcessorSetFriendlyName( + PDEVICE_OBJECT DeviceObject) +{ + KEY_VALUE_PARTIAL_INFORMATION *Buffer = NULL; + OBJECT_ATTRIBUTES ObjectAttributes; + UNICODE_STRING HardwareKeyName, ValueName, EnumKeyName; + HANDLE KeyHandle = NULL; + ULONG DataLength = 0; + ULONG BufferLength = 0; + NTSTATUS Status; + PWSTR KeyNameBuffer = NULL; + PWSTR DeviceId = NULL; + PWSTR InstanceId = NULL; + PWSTR pszPrefix = L"\\Registry\\Machine\\System\\CurrentcontrolSet\\Enum"; + + RtlInitUnicodeString(&HardwareKeyName, + L"\\Registry\\Machine\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"); + InitializeObjectAttributes(&ObjectAttributes, + &HardwareKeyName, + OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, + NULL, + NULL); + Status = ZwOpenKey(&KeyHandle, + KEY_READ, + &ObjectAttributes); + if (!NT_SUCCESS(Status)) + { + DPRINT1("ZwOpenKey() failed (Status 0x%08lx)\n", Status); + return; + } + + RtlInitUnicodeString(&ValueName, + L"ProcessorNameString"); + Status = ZwQueryValueKey(KeyHandle, + &ValueName, + KeyValuePartialInformation, + NULL, + 0, + &DataLength); + if (Status != STATUS_BUFFER_OVERFLOW && Status != STATUS_BUFFER_TOO_SMALL && Status != STATUS_SUCCESS) + { + DPRINT1("ZwQueryValueKey() failed (Status 0x%08lx)\n", Status); + goto done; + } + + Buffer = ExAllocatePool(PagedPool, + DataLength + sizeof(KEY_VALUE_PARTIAL_INFORMATION)); + if (Buffer == NULL) + { + DPRINT1("ExAllocatePool() failed\n"); + goto done; + } + + Status = ZwQueryValueKey(KeyHandle, + &ValueName, + KeyValuePartialInformation, + Buffer, + DataLength + sizeof(KEY_VALUE_PARTIAL_INFORMATION), + &DataLength); + if (!NT_SUCCESS(Status)) + { + DPRINT1("ZwQueryValueKey() failed (Status 0x%08lx)\n", Status); + goto done; + } + + DPRINT("ProcessorNameString: %S\n", (PWSTR)&Buffer->Data[0]); + + ZwClose(KeyHandle); + KeyHandle = NULL; + + Status = GetDeviceId(DeviceObject, + BusQueryDeviceID, + &DeviceId); + if (!NT_SUCCESS(Status)) + { + DPRINT1("GetDeviceId() failed (Status 0x%08lx)\n", Status); + goto done; + } + + DPRINT("DeviceId: %S\n", DeviceId); + + Status = GetDeviceId(DeviceObject, + BusQueryInstanceID, + &InstanceId); + if (!NT_SUCCESS(Status)) + { + DPRINT1("GetDeviceId() failed (Status 0x%08lx)\n", Status); + goto done; + } + + DPRINT("InstanceId: %S\n", InstanceId); + + BufferLength = wcslen(pszPrefix) + 1 + wcslen(DeviceId) + 1 + wcslen(InstanceId) + 1; + + KeyNameBuffer = ExAllocatePool(PagedPool, BufferLength * sizeof(WCHAR)); + if (KeyNameBuffer == NULL) + { + DPRINT1("ExAllocatePool() failed\n"); + goto done; + } + + swprintf(KeyNameBuffer, L"%s\\%s\\%s", pszPrefix, DeviceId, InstanceId); + + RtlInitUnicodeString(&EnumKeyName, KeyNameBuffer); + InitializeObjectAttributes(&ObjectAttributes, + &EnumKeyName, + OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, + NULL, + NULL); + Status = ZwOpenKey(&KeyHandle, + KEY_WRITE, + &ObjectAttributes); + if (!NT_SUCCESS(Status)) + { + DPRINT1("ZwOpenKey() failed (Status 0x%08lx)\n", Status); + goto done; + } + + RtlInitUnicodeString(&ValueName, + L"FriendlyName"); + Status = ZwSetValueKey(KeyHandle, + &ValueName, + 0, + REG_SZ, + (PVOID)&Buffer->Data[0], + Buffer->DataLength); + if (!NT_SUCCESS(Status)) + { + DPRINT1("ZwSetValueKey() failed (Status 0x%08lx)\n", Status); + goto done; + } + +done: + if (KeyHandle != NULL) + ZwClose(KeyHandle); + + if (KeyNameBuffer != NULL) + ExFreePool(KeyNameBuffer); + + if (InstanceId != NULL) + ExFreePool(InstanceId); + + if (DeviceId != NULL) + ExFreePool(DeviceId); + + if (Buffer != NULL) + ExFreePool(Buffer); +} + + +static +NTSTATUS +ProcessorStartDevice( + IN PDEVICE_OBJECT DeviceObject, + IN PCM_RESOURCE_LIST ResourceList, + IN PCM_RESOURCE_LIST ResourceListTranslated) +{ + DPRINT("ProcessorStartDevice()\n"); + + ProcessorSetFriendlyName(DeviceObject); + + return STATUS_SUCCESS; +} + + +NTSTATUS +NTAPI +ProcessorPnp( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PIO_STACK_LOCATION IrpSp; + ULONG_PTR Information = 0; + NTSTATUS Status = STATUS_NOT_SUPPORTED; + + DPRINT("ProcessorPnp()\n"); + + IrpSp = IoGetCurrentIrpStackLocation(Irp); + + switch (IrpSp->MinorFunction) + { + case IRP_MN_START_DEVICE: + DPRINT(" IRP_MN_START_DEVICE received\n"); + + /* Call lower driver */ + Status = ForwardIrpAndWait(DeviceObject, Irp); + if (NT_SUCCESS(Status)) + { + Status = ProcessorStartDevice(DeviceObject, + IrpSp->Parameters.StartDevice.AllocatedResources, + IrpSp->Parameters.StartDevice.AllocatedResourcesTranslated); + } + break; + + case IRP_MN_QUERY_REMOVE_DEVICE: + DPRINT(" IRP_MN_QUERY_REMOVE_DEVICE\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + case IRP_MN_REMOVE_DEVICE: + DPRINT(" IRP_MN_REMOVE_DEVICE received\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + case IRP_MN_CANCEL_REMOVE_DEVICE: + DPRINT(" IRP_MN_CANCEL_REMOVE_DEVICE\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + case IRP_MN_STOP_DEVICE: + DPRINT(" IRP_MN_STOP_DEVICE received\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + case IRP_MN_QUERY_STOP_DEVICE: + DPRINT(" IRP_MN_QUERY_STOP_DEVICE received\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + case IRP_MN_CANCEL_STOP_DEVICE: + DPRINT(" IRP_MN_CANCEL_STOP_DEVICE\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + case IRP_MN_QUERY_DEVICE_RELATIONS: + DPRINT(" IRP_MN_QUERY_DEVICE_RELATIONS\n"); + + switch (IrpSp->Parameters.QueryDeviceRelations.Type) + { + case BusRelations: + DPRINT(" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / BusRelations\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + break; + + case RemovalRelations: + DPRINT(" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / RemovalRelations\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + default: + DPRINT(" IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / Unknown type 0x%lx\n", + IrpSp->Parameters.QueryDeviceRelations.Type); + return ForwardIrpAndForget(DeviceObject, Irp); + } + break; + + case IRP_MN_SURPRISE_REMOVAL: + DPRINT(" IRP_MN_SURPRISE_REMOVAL received\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + case IRP_MN_FILTER_RESOURCE_REQUIREMENTS: /* (optional) 0xd */ + DPRINT(" IRP_MN_FILTER_RESOURCE_REQUIREMENTS\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + + default: + DPRINT(" Unknown IOCTL 0x%lx\n", IrpSp->MinorFunction); + return ForwardIrpAndForget(DeviceObject, Irp); + } + + Irp->IoStatus.Information = Information; + Irp->IoStatus.Status = Status; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + + return Status; +} + + +NTSTATUS +NTAPI +ProcessorAddDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT Pdo) +{ + PDEVICE_EXTENSION DeviceExtension = NULL; + PDEVICE_OBJECT Fdo = NULL; + NTSTATUS Status; + + DPRINT("ProcessorAddDevice()\n"); + + ASSERT(DriverObject); + ASSERT(Pdo); + + /* Create functional device object */ + Status = IoCreateDevice(DriverObject, + sizeof(DEVICE_EXTENSION), + NULL, + FILE_DEVICE_UNKNOWN, + FILE_DEVICE_SECURE_OPEN, + FALSE, + &Fdo); + if (NT_SUCCESS(Status)) + { + DeviceExtension = (PDEVICE_EXTENSION)Fdo->DeviceExtension; + RtlZeroMemory(DeviceExtension, sizeof(DEVICE_EXTENSION)); + + DeviceExtension->DeviceObject = Fdo; + + Status = IoAttachDeviceToDeviceStackSafe(Fdo, Pdo, &DeviceExtension->LowerDevice); + if (!NT_SUCCESS(Status)) + { + DPRINT1("IoAttachDeviceToDeviceStackSafe() failed with status 0x%08lx\n", Status); + IoDeleteDevice(Fdo); + return Status; + } + + Fdo->Flags |= DO_DIRECT_IO; + Fdo->Flags |= DO_POWER_PAGABLE; + + Fdo->Flags &= ~DO_DEVICE_INITIALIZING; + } + + return Status; +} + +/* EOF */ diff --git a/reactos/drivers/processor/processr/processr.c b/reactos/drivers/processor/processr/processr.c new file mode 100644 index 00000000000..9c2a0288537 --- /dev/null +++ b/reactos/drivers/processor/processr/processr.c @@ -0,0 +1,65 @@ +/* + * PROJECT: ReactOS Generic CPU Driver + * LICENSE: GNU GPLv2 only as published by the Free Software Foundation + * FILE: drivers/processor/processr/processr.c + * PURPOSE: Main Driver Routines + * PROGRAMMERS: Eric Kohl + */ + +/* INCLUDES *******************************************************************/ + +#include "processr.h" + +#define NDEBUG +#include + + +/* FUNCTIONS ******************************************************************/ + +static +VOID +NTAPI +ProcessorUnload( + IN PDRIVER_OBJECT DriverObject) +{ + DPRINT("ProcessorUnload()\n"); +} + + +static +NTSTATUS +NTAPI +ProcessorPower( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ +// PIO_STACK_LOCATION IrpSp; +// NTSTATUS Status = Irp->IoStatus.Status; + PDEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension; + + DPRINT("ProcessorPower()\n"); + +// IrpSp = IoGetCurrentIrpStackLocation(Irp); + + PoStartNextPowerIrp(Irp); + IoSkipCurrentIrpStackLocation(Irp); + return PoCallDriver(DeviceExtension->LowerDevice, Irp); +} + + +NTSTATUS +NTAPI +DriverEntry( + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPath) +{ + DPRINT("Processr: DriverEntry()\n"); + + DriverObject->MajorFunction[IRP_MJ_PNP] = ProcessorPnp; + DriverObject->MajorFunction[IRP_MJ_POWER] = ProcessorPower; + + DriverObject->DriverExtension->AddDevice = ProcessorAddDevice; + DriverObject->DriverUnload = ProcessorUnload; + + return STATUS_SUCCESS; +} diff --git a/reactos/drivers/processor/processr/processr.h b/reactos/drivers/processor/processr/processr.h new file mode 100644 index 00000000000..3e513bbb3ef --- /dev/null +++ b/reactos/drivers/processor/processr/processr.h @@ -0,0 +1,51 @@ +/* + * PROJECT: ReactOS Generic CPU Driver + * LICENSE: GNU GPLv2 only as published by the Free Software Foundation + * FILE: drivers/processor/processr/processr.h + * PURPOSE: Common header file + * PROGRAMMERS: Eric Kohl + */ + +#ifndef _PROCESSR_PCH_ +#define _PROCESSR_PCH_ + +#include + +typedef struct _DEVICE_EXTENSION +{ + PDEVICE_OBJECT DeviceObject; + PDEVICE_OBJECT LowerDevice; + +} DEVICE_EXTENSION, *PDEVICE_EXTENSION; + + +/* misc.c */ + +NTSTATUS +NTAPI +ForwardIrpAndWait( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS +NTAPI +ForwardIrpAndForget( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + + +/* pnp.c */ + +NTSTATUS +NTAPI +ProcessorPnp( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS +NTAPI +ProcessorAddDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT Pdo); + +#endif /* _PROCESSR_PCH_ */ diff --git a/reactos/drivers/processor/processr/processr.rc b/reactos/drivers/processor/processr/processr.rc new file mode 100644 index 00000000000..881ecffdb7d --- /dev/null +++ b/reactos/drivers/processor/processr/processr.rc @@ -0,0 +1,13 @@ +/* + * PROJECT: ReactOS Generic CPU Driver + * LICENSE: GNU GPLv2 only as published by the Free Software Foundation + * FILE: drivers/processor/processr/processr.rc + * PURPOSE: Resource definition file + * PROGRAMMERS: Eric Kohl + */ + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "Processor Device Driver\0" +#define REACTOS_STR_INTERNAL_NAME "processr\0" +#define REACTOS_STR_ORIGINAL_FILENAME "processr.sys\0" +#include diff --git a/reactos/media/inf/cpu.inf b/reactos/media/inf/cpu.inf index 0a63a9a3231..1e83841b4c1 100644 --- a/reactos/media/inf/cpu.inf +++ b/reactos/media/inf/cpu.inf @@ -29,74 +29,84 @@ HKR, , Icon, 0, "-28" %VIAMfg%=VIA [Standard] -%Processor.DeviceDesc% = NO_DRV,ACPI\Processor +%Processor.DeviceDesc% = Processr_Inst,ACPI\Processor [Cyrix] -%CyrixProcessor.DeviceDesc% = NO_DRV,ACPI\CyrixInstead_-_x86 +%CyrixProcessor.DeviceDesc% = Processr_Inst,ACPI\CyrixInstead_-_x86 [Intel] -%IntelProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_5_model_1 -%IntelProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_5_model_2 -%IntelProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_5_model_3 -%IntelMMXProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_5_model_4 -%IntelMMXProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_5_model_7 -%IntelMMXProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_5_model_8 -%IntelPROProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_1 -%IntelP2Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_3 -%IntelP2Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_5 -%IntelP2Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_6 -%IntelP3Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_7 -%IntelP3Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_8 -%IntelMProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_9 -%IntelP3Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_10 -%IntelP3Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_11 -%IntelMProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_13 -%IntelCoreProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_14 -%IntelCoreProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_15 -%IntelCoreProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_22 -%IntelCoreProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_23 -%IntelCoreiXProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_26 -%IntelAtomProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_28 -%IntelCoreiXProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_30 -%IntelCoreiXProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_6_Model_37 -%IntelP4Processor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86_Family_15 -%IntelProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineIntel_-_x86 +%IntelProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_5_model_1 +%IntelProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_5_model_2 +%IntelProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_5_model_3 +%IntelMMXProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_5_model_4 +%IntelMMXProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_5_model_7 +%IntelMMXProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_5_model_8 +%IntelPROProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_1 +%IntelP2Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_3 +%IntelP2Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_5 +%IntelP2Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_6 +%IntelP3Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_7 +%IntelP3Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_8 +%IntelMProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_9 +%IntelP3Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_10 +%IntelP3Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_11 +%IntelMProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_13 +%IntelCoreProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_14 +%IntelCoreProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_15 +%IntelCoreProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_22 +%IntelCoreProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_23 +%IntelCoreiXProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_26 +%IntelAtomProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_28 +%IntelCoreiXProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_30 +%IntelCoreiXProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_6_Model_37 +%IntelP4Processor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86_Family_15 +%IntelProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineIntel_-_x86 [AMD] -%AMDK6Processor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_5_Model_7 -%AMDK62Processor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_5_Model_8 -%AMDK63Processor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_5_Model_9 -%AMDK63Processor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_5_Model_10 -%AMDK63Processor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_5_Model_13 -%AMDK7Processor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_6 -%AMDK8Processor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_15 -%AMDPHENProcessor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_16 -%AMDQProcessor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86_Family_17 -%AMDProcessor.DeviceDesc% = NO_DRV,ACPI\AuthenticAMD_-_x86 +%AMDK6Processor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_5_Model_7 +%AMDK62Processor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_5_Model_8 +%AMDK63Processor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_5_Model_9 +%AMDK63Processor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_5_Model_10 +%AMDK63Processor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_5_Model_13 +%AMDK7Processor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_6 +%AMDK8Processor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_15 +%AMDPHENProcessor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_16 +%AMDQProcessor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86_Family_17 +%AMDProcessor.DeviceDesc% = Processr_Inst,ACPI\AuthenticAMD_-_x86 [Transmeta] -%TransmetaProcessor.DeviceDesc% = NO_DRV,ACPI\GenuineTMx86_-_x86 +%TransmetaProcessor.DeviceDesc% = Processr_Inst,ACPI\GenuineTMx86_-_x86 [VIA] -%ViaNEHProcessor.DeviceDesc% = NO_DRV,ACPI\CentaurHauls_-_x86_Family_6_Model_9 -%ViaESTProcessor.DeviceDesc% = NO_DRV,ACPI\CentaurHauls_-_x86_Family_6_Model_10 -%ViaC7Processor.DeviceDesc% = NO_DRV,ACPI\CentaurHauls_-_x86_Family_6_Model_13 -%ViaNANOProcessor.DeviceDesc% = NO_DRV,ACPI\CentaurHauls_-_x86_Family_6_Model_15 -%ViaProcessor.DeviceDesc% = NO_DRV,ACPI\CentaurHauls_-_x86 +%ViaNEHProcessor.DeviceDesc% = Processr_Inst,ACPI\CentaurHauls_-_x86_Family_6_Model_9 +%ViaESTProcessor.DeviceDesc% = Processr_Inst,ACPI\CentaurHauls_-_x86_Family_6_Model_10 +%ViaC7Processor.DeviceDesc% = Processr_Inst,ACPI\CentaurHauls_-_x86_Family_6_Model_13 +%ViaNANOProcessor.DeviceDesc% = Processr_Inst,ACPI\CentaurHauls_-_x86_Family_6_Model_15 +%ViaProcessor.DeviceDesc% = Processr_Inst,ACPI\CentaurHauls_-_x86 -;---------------------------- NO DRIVER REQ ----------------------------- +;---------------------------- Processr Driver --------------------------- -[NO_DRV] -AddReg=NO_DRV.AddReg +[Processr_Inst.NT] +CopyFiles = Processr_Inst.CopyFiles.NT +AddReg = Processr_Inst.AddReg.NT -[NO_DRV.Services] -AddService = , 0x00000002 +[Processr_Inst.CopyFiles.NT] +processr.sys -[NO_DRV.HW] - -[NO_DRV.AddReg] +[Processr_Inst.AddReg.NT] HKR,,EnumPropPages32,,"devcpux.dll,PropSheetExtProc" +[Processr_Inst.NT.Services] +AddService = Processor, 0x00000002, Processr_Service_Inst + +[Processr_Service_Inst] +DisplayName = %Processor.ServiceDesc% +ServiceType = 1 +StartType = 1 +ErrorControl = 1 +ServiceBinary = %12%\processr.sys +LoadOrderGroup = Extended Base + ;-------------------------------- STRINGS ------------------------------- [Strings] @@ -110,6 +120,7 @@ AMDMfg = "Advanced Micro Devices" TransmetaMfg = "Transmeta" VIAMfg = "VIA" Processor.DeviceDesc = "Processor" +Processor.ServiceDesc = "Processor driver" CyrixProcessor.DeviceDesc = "Cyrix 6x86 Processor" IntelProcessor.DeviceDesc = "Intel Pentium Processor" IntelMMXProcessor.DeviceDesc = "Intel Pentium MMX Processor" @@ -139,6 +150,7 @@ ViaProcessor.DeviceDesc = "VIA Processor" [Strings.0405] Processor.DeviceDesc = "Procesor" +Processor.ServiceDesc = "Processor driver" CyrixProcessor.DeviceDesc = "Procesor Cyrix 6x86" IntelProcessor.DeviceDesc = "Procesor Intel Pentium" IntelMMXProcessor.DeviceDesc = "Procesor Intel Pentium MMX" @@ -169,6 +181,7 @@ ViaProcessor.DeviceDesc = "Procesor VIA" [Strings.0407] ProcessorClassName = "Prozessoren" Processor.DeviceDesc = "Prozessor" +Processor.ServiceDesc = "Prozessortreiber" CyrixProcessor.DeviceDesc = "Cyrix 6x86 Prozessor" IntelProcessor.DeviceDesc = "Intel Pentium Prozessor" IntelMMXProcessor.DeviceDesc = "Intel Pentium MMX Prozessor" @@ -198,23 +211,27 @@ ViaProcessor.DeviceDesc = "VIA Prozessor" [Strings.0408] Processor.DeviceDesc = "Επεξεργαστής" +Processor.ServiceDesc = "Processor driver" IntelProcessor.DeviceDesc = "Επεξεργαστής Intel" Standard = "Πρότυπος επεξεργαστής" [Strings.0a] ReactOS = "Equipo de ReactOS" Processor.DeviceDesc = "Procesador" +Processor.ServiceDesc = "Processor driver" IntelProcessor.DeviceDesc = "Procesador Intel" AMDProcessor.DeviceDesc = "Procesador AMD" Standard = "Procesador estándar" [Strings.040C] Processor.DeviceDesc = "Processeur" +Processor.ServiceDesc = "Processor driver" IntelProcessor.DeviceDesc = "Processeur Intel" Standard = "Processeur standard" [Strings.0411] Processor.DeviceDesc = "プロセッサ" +Processor.ServiceDesc = "Processor driver" IntelProcessor.DeviceDesc = "Intel プロセッサ" Standard = "スタンダードプロセッサ" @@ -228,6 +245,7 @@ AMDMfg = "Advanced Micro Devices" TransmetaMfg = "Transmeta" VIAMfg = "VIA" Processor.DeviceDesc = "Procesor" +Processor.ServiceDesc = "Processor driver" CyrixProcessor.DeviceDesc = "Procesor Cyrix 6x86" IntelProcessor.DeviceDesc = "Procesor Intel Pentium" IntelMMXProcessor.DeviceDesc = "Procesor Intel Pentium MMX" @@ -257,6 +275,7 @@ ViaProcessor.DeviceDesc = "Procesor VIA" [Strings.0416] Processor.DeviceDesc = "Processadores" +Processor.ServiceDesc = "Processor driver" IntelProcessor.DeviceDesc = "Procesador Intel" Standard = "Processador padrão" @@ -264,6 +283,7 @@ Standard = "Processador padrão" ReactOS = "Fundația ReactOS" ProcessorClassName = "Procesoare" Processor.DeviceDesc = "Procesor" +Processor.ServiceDesc = "Processor driver" CyrixProcessor.DeviceDesc = "Procesor Cyrix 6x86" IntelProcessor.DeviceDesc = "Procesor Intel Pentium" IntelMMXProcessor.DeviceDesc = "Procesor Intel Pentium MMX" @@ -297,6 +317,7 @@ ReactOS = "Фонд ReactOS" ProcessorClassName = "Процессоры" Processor.DeviceDesc = "Процессор" +Processor.ServiceDesc = "Processor driver" CyrixProcessor.DeviceDesc = "Cyrix 6x86 процессор" IntelProcessor.DeviceDesc = "Intel Pentium процессор" IntelMMXProcessor.DeviceDesc = "Intel Pentium MMX процессор" @@ -326,6 +347,7 @@ ViaProcessor.DeviceDesc = "VIA процессор" [Strings.041B] Processor.DeviceDesc = "Procesor" +Processor.ServiceDesc = "Processor driver" IntelProcessor.DeviceDesc = "Intel procesor" Standard = "Štandardný procesor" @@ -339,6 +361,7 @@ AMDMfg = "Advanced Micro Devices" TransmetaMfg = "Transmeta" VIAMfg = "VIA" Processor.DeviceDesc = "İşlemci" +Processor.ServiceDesc = "Processor driver" CyrixProcessor.DeviceDesc = "Cyrix 6x86 İşlemci" IntelProcessor.DeviceDesc = "Intel Pentium İşlemci" IntelMMXProcessor.DeviceDesc = "Intel Pentium MMX İşlemci" @@ -370,6 +393,7 @@ ViaProcessor.DeviceDesc = "VIA İşlemci" ReactOS = "Фонд ReactOS" ProcessorClassName = "Процесори" Processor.DeviceDesc = "Процесор" +Processor.ServiceDesc = "Processor driver" CyrixProcessor.DeviceDesc = "Процесор Cyrix 6x86" IntelProcessor.DeviceDesc = "Процесор Intel Pentium" IntelMMXProcessor.DeviceDesc = "Процесор Intel Pentium MMX" @@ -399,5 +423,6 @@ ViaProcessor.DeviceDesc = "Процесор VIA" [Strings.0427] Processor.DeviceDesc = "Procesorius" +Processor.ServiceDesc = "Processor driver" IntelProcessor.DeviceDesc = "Intel procesorius" Standard = "Standartinis procesorius"