19 DPRINT(
"Battery class driver initialized\n");
67 PULONG InstanceLengthArray,
102 DPRINT1(
"Waiting for battery is UNIMPLEMENTED!\n");
146 if (BattClass ==
NULL)
162 &GUID_DEVICE_BATTERY,
171 DPRINT1(
"Got STATUS_OBJECT_NAME_EXISTS for SetDeviceInterfaceState\n");
177 DPRINT1(
"IoRegisterDeviceInterface failed (0x%x)\n",
Status);
209 Irp->IoStatus.Information = 0;
224 WaitTime = *(
PULONG)
Irp->AssociatedIrp.SystemBuffer;
229 (
PULONG)
Irp->AssociatedIrp.SystemBuffer);
250 (
PULONG)
Irp->AssociatedIrp.SystemBuffer);
252 Irp->IoStatus.Information =
sizeof(
ULONG);
261 Irp->IoStatus.Information =
sizeof(
ULONG);
266 if (
IrpSp->
Parameters.DeviceIoControl.InputBufferLength <
sizeof(*BattWait) ||
273 BattWait =
Irp->AssociatedIrp.SystemBuffer;
281 BattStatus =
Irp->AssociatedIrp.SystemBuffer;
320 Irp->IoStatus.Information =
sizeof(
ULONG);
334 if (
IrpSp->
Parameters.DeviceIoControl.InputBufferLength <
sizeof(*BattQueryInfo))
340 BattQueryInfo =
Irp->AssociatedIrp.SystemBuffer;
346 Irp->AssociatedIrp.SystemBuffer,
357 if (
IrpSp->
Parameters.DeviceIoControl.InputBufferLength <
sizeof(*BattSetInfo))
363 BattSetInfo =
Irp->AssociatedIrp.SystemBuffer;
return STATUS_NOT_SUPPORTED
BCLASSAPI NTSTATUS NTAPI BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo, PVOID *ClassData)
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_WMI_GUID_NOT_FOUND
#define EVENT_BATTERY_STATUS
#define IOCTL_BATTERY_QUERY_INFORMATION
#define STATUS_OBJECT_NAME_EXISTS
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
UNICODE_STRING InterfaceName
BCLASSAPI NTSTATUS NTAPI BatteryClassIoctl(PVOID ClassData, PIRP Irp)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
BCLASSAPI NTSTATUS NTAPI BatteryClassUnload(PVOID ClassData)
NTSTATUS NTAPI DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
#define STATUS_BUFFER_TOO_SMALL
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify
BCLASSAPI NTSTATUS NTAPI BatteryClassStatusNotify(PVOID ClassData)
#define IoCompleteRequest
_In_ PIRP _In_ ULONG GuidIndex
NTSTATUS NTAPI IoSetDeviceInterfaceState(IN PUNICODE_STRING SymbolicLinkName, IN BOOLEAN Enable)
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define BATTERY_CLASS_DATA_TAG
#define IOCTL_BATTERY_SET_INFORMATION
#define NT_SUCCESS(StatCode)
#define STATUS_NO_SUCH_DEVICE
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
#define IOCTL_BATTERY_QUERY_TAG
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
PVOID EventTriggerContext
#define ExAllocatePoolWithTag(hernya, size, tag)
BCLASSAPI NTSTATUS NTAPI BatteryClassSystemControl(PVOID ClassData, PVOID WmiLibContext, PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Disposition)
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG _In_ ULONG _Out_ PULONG ReturnedLength
BCLASS_QUERY_INFORMATION QueryInformation
#define IOCTL_BATTERY_QUERY_STATUS
BCLASSAPI NTSTATUS NTAPI BatteryClassQueryWmiDataBlock(PVOID ClassData, PDEVICE_OBJECT DeviceObject, PIRP Irp, ULONG GuidIndex, PULONG InstanceLengthArray, ULONG OutBufferSize, PUCHAR Buffer)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
NTSTATUS NTAPI IoRegisterDeviceInterface(IN PDEVICE_OBJECT PhysicalDeviceObject, IN CONST GUID *InterfaceClassGuid, IN PUNICODE_STRING ReferenceString OPTIONAL, OUT PUNICODE_STRING SymbolicLinkName)
#define KeInitializeEvent(pEvt, foo, foo2)
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
#define EVENT_BATTERY_TAG
_In_ PIO_STACK_LOCATION IrpSp
BCLASS_SET_INFORMATION SetInformation
BATTERY_MINIPORT_INFO MiniportInfo
BCLASS_SET_STATUS_NOTIFY SetStatusNotify
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
#define ExFreePoolWithTag(_P, _T)
BCLASS_QUERY_TAG QueryTag
BCLASS_QUERY_STATUS QueryStatus
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define Int32x32To64(a, b)
struct _BATTERY_STATUS BATTERY_STATUS