+++ /dev/null
-/*
- * PROJECT: ReactOS Kernel
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: drivers/battery/cmbatt/cmbatt.c
- * PURPOSE: Control Method Battery Miniclass Driver
- * PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
- */
-
-#include <cmbatt.h>
-
-#define NDEBUG
-#include <debug.h>
-
-LIST_ENTRY BatteryList;
-KSPIN_LOCK BatteryListLock;
-
-VOID
-NTAPI
-CmBattUnload(PDRIVER_OBJECT DriverObject)
-{
- DPRINT("Control method battery miniclass driver unloaded\n");
-}
-
-NTSTATUS
-NTAPI
-CmBattDeviceControl(PDEVICE_OBJECT DeviceObject,
- PIRP Irp)
-{
- PCMBATT_DEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
- NTSTATUS Status;
-
- Status = BatteryClassIoctl(DeviceExtension->BattClassHandle,
- Irp);
-
- if (Status == STATUS_NOT_SUPPORTED)
- {
- Irp->IoStatus.Status = Status;
- Irp->IoStatus.Information = 0;
-
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
- }
-
- return Status;
-}
-
-NTSTATUS
-NTAPI
-CmBattPnP(PDEVICE_OBJECT DeviceObject,
- PIRP Irp)
-{
- PCMBATT_DEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
-
- UNIMPLEMENTED
-
- IoSkipCurrentIrpStackLocation(Irp);
-
- return IoCallDriver(DeviceExtension->Ldo, Irp);
-}
-
-NTSTATUS
-NTAPI
-CmBattSystemControl(PDEVICE_OBJECT DeviceObject,
- PIRP Irp)
-{
- UNIMPLEMENTED
-
- Irp->IoStatus.Status = STATUS_WMI_GUID_NOT_FOUND;
- Irp->IoStatus.Information = 0;
-
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
- return STATUS_WMI_GUID_NOT_FOUND;
-}
-
-NTSTATUS
-NTAPI
-CmBattPower(PDEVICE_OBJECT DeviceObject,
- PIRP Irp)
-{
- PCMBATT_DEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
-
- UNIMPLEMENTED
-
- IoSkipCurrentIrpStackLocation(Irp);
-
- PoStartNextPowerIrp(Irp);
-
- return PoCallDriver(DeviceExtension->Ldo, Irp);
-}
-
-NTSTATUS
-NTAPI
-CmBattCreateClose(PDEVICE_OBJECT DeviceObject,
- PIRP Irp)
-{
- Irp->IoStatus.Status = STATUS_SUCCESS;
- Irp->IoStatus.Information = 0;
-
- IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
- return STATUS_SUCCESS;
-}
-
-NTSTATUS
-NTAPI
-CmBattAddDevice(PDRIVER_OBJECT DriverObject,
- PDEVICE_OBJECT PhysicalDeviceObject)
-{
- NTSTATUS Status;
- PDEVICE_OBJECT DeviceObject;
- PCMBATT_DEVICE_EXTENSION DeviceExtension;
- BATTERY_MINIPORT_INFO BattInfo;
-
- Status = IoCreateDevice(DriverObject,
- sizeof(CMBATT_DEVICE_EXTENSION),
- NULL,
- FILE_DEVICE_BATTERY,
- 0,
- FALSE,
- &DeviceObject);
- if (!NT_SUCCESS(Status))
- return Status;
-
- DeviceExtension = DeviceObject->DeviceExtension;
-
- DeviceExtension->Pdo = PhysicalDeviceObject;
- DeviceExtension->Fdo = DeviceObject;
- DeviceExtension->Ldo = IoAttachDeviceToDeviceStack(DeviceObject,
- PhysicalDeviceObject);
-
- DeviceObject->Flags |= DO_BUFFERED_IO | DO_POWER_PAGABLE;
-
- /* We require an extra stack entry */
- DeviceObject->StackSize = PhysicalDeviceObject->StackSize + 2;
-
- BattInfo.MajorVersion = BATTERY_CLASS_MAJOR_VERSION;
- BattInfo.MinorVersion = BATTERY_CLASS_MINOR_VERSION;
- BattInfo.Context = DeviceExtension;
- BattInfo.QueryTag = CmBattQueryTag;
- BattInfo.QueryInformation = CmBattQueryInformation;
- BattInfo.SetInformation = CmBattSetInformation;
- BattInfo.QueryStatus = CmBattQueryStatus;
- BattInfo.SetStatusNotify = CmBattSetStatusNotify;
- BattInfo.DisableStatusNotify = CmBattDisableStatusNotify;
- BattInfo.Pdo = PhysicalDeviceObject;
- BattInfo.DeviceName = NULL;
-
- Status = BatteryClassInitializeDevice(&BattInfo,
- &DeviceExtension->BattClassHandle);
- if (!NT_SUCCESS(Status))
- {
- IoDetachDevice(DeviceExtension->Ldo);
- IoDeleteDevice(DeviceObject);
- return Status;
- }
-
- ExInterlockedInsertTailList(&BatteryList,
- &DeviceExtension->ListEntry,
- &BatteryListLock);
-
- DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
-
- DPRINT("Successfully registered battery with battc (0x%x)\n", DeviceExtension->BattClassHandle);
-
- return STATUS_SUCCESS;
-}
-
-NTSTATUS
-NTAPI
-DriverEntry(PDRIVER_OBJECT DriverObject,
- PUNICODE_STRING RegistryPath)
-{
- DPRINT("Control method battery miniclass driver initialized\n");
-
- DriverObject->DriverUnload = CmBattUnload;
- DriverObject->DriverExtension->AddDevice = CmBattAddDevice;
- DriverObject->MajorFunction[IRP_MJ_POWER] = CmBattPower;
- DriverObject->MajorFunction[IRP_MJ_PNP] = CmBattPnP;
- DriverObject->MajorFunction[IRP_MJ_CREATE] = CmBattCreateClose;
- DriverObject->MajorFunction[IRP_MJ_CLOSE] = CmBattCreateClose;
- DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = CmBattDeviceControl;
- DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = CmBattSystemControl;
-
- KeInitializeSpinLock(&BatteryListLock);
- InitializeListHead(&BatteryList);
-
- return STATUS_SUCCESS;
-}
+++ /dev/null
-/*
-* PROJECT: ReactOS Kernel
-* LICENSE: GPL - See COPYING in the top level directory
-* FILE: drivers/battery/cmbatt/cmbatt.h
-* PURPOSE: Control Method Battery Miniclass Driver
-* PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
-*/
-
-#pragma once
-
-#include <ntddk.h>
-#include <batclass.h>
-
-typedef struct _CMBATT_DEVICE_EXTENSION {
- PDEVICE_OBJECT Pdo;
- PDEVICE_OBJECT Ldo;
- PDEVICE_OBJECT Fdo;
- PVOID BattClassHandle;
- LIST_ENTRY ListEntry;
-} CMBATT_DEVICE_EXTENSION, *PCMBATT_DEVICE_EXTENSION;
-
-NTSTATUS
-NTAPI
-CmBattQueryTag(PVOID Context,
- PULONG BatteryTag);
-
-NTSTATUS
-NTAPI
-CmBattDisableStatusNotify(PVOID Context);
-
-NTSTATUS
-NTAPI
-CmBattSetStatusNotify(PVOID Context,
- ULONG BatteryTag,
- PBATTERY_NOTIFY BatteryNotify);
-
-NTSTATUS
-NTAPI
-CmBattQueryInformation(PVOID Context,
- ULONG BatteryTag,
- BATTERY_QUERY_INFORMATION_LEVEL Level,
- OPTIONAL LONG AtRate,
- PVOID Buffer,
- ULONG BufferLength,
- PULONG ReturnedLength);
-
-NTSTATUS
-NTAPI
-CmBattQueryStatus(PVOID Context,
- ULONG BatteryTag,
- PBATTERY_STATUS BatteryStatus);
-
-NTSTATUS
-NTAPI
-CmBattSetInformation(PVOID Context,
- ULONG BatteryTag,
- BATTERY_SET_INFORMATION_LEVEL Level,
- OPTIONAL PVOID Buffer);
+++ /dev/null
-/*
- * PROJECT: ReactOS Kernel
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: drivers/battery/cmbatt/miniclass.c
- * PURPOSE: Control Method Battery Miniclass Driver
- * PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
- */
-
-#include <cmbatt.h>
-
-#define NDEBUG
-#include <debug.h>
-
-NTSTATUS
-NTAPI
-CmBattQueryTag(PVOID Context,
- PULONG BatteryTag)
-{
- UNIMPLEMENTED
-
- *BatteryTag = 0;
-
- return STATUS_SUCCESS;
-}
-
-NTSTATUS
-NTAPI
-CmBattDisableStatusNotify(PVOID Context)
-{
- UNIMPLEMENTED
-
- return STATUS_NOT_SUPPORTED;
-}
-
-NTSTATUS
-NTAPI
-CmBattSetStatusNotify(PVOID Context,
- ULONG BatteryTag,
- PBATTERY_NOTIFY BatteryNotify)
-{
- UNIMPLEMENTED
-
- return STATUS_NOT_SUPPORTED;
-}
-
-NTSTATUS
-NTAPI
-CmBattQueryInformation(PVOID Context,
- ULONG BatteryTag,
- BATTERY_QUERY_INFORMATION_LEVEL Level,
- OPTIONAL LONG AtRate,
- PVOID Buffer,
- ULONG BufferLength,
- PULONG ReturnedLength)
-{
- UNIMPLEMENTED
-
- return STATUS_NOT_SUPPORTED;
-}
-
-NTSTATUS
-NTAPI
-CmBattQueryStatus(PVOID Context,
- ULONG BatteryTag,
- PBATTERY_STATUS BatteryStatus)
-{
- UNIMPLEMENTED
-
- return STATUS_NOT_SUPPORTED;
-}
-
-NTSTATUS
-NTAPI
-CmBattSetInformation(PVOID Context,
- ULONG BatteryTag,
- BATTERY_SET_INFORMATION_LEVEL Level,
- OPTIONAL PVOID Buffer)
-{
- UNIMPLEMENTED
-
- return STATUS_NOT_SUPPORTED;
-}