149{
162
163 DPRINT(
"PopAddRemoveSysCapsCallback(%p %p)\n",
165
175 else
177
178 if (Arrival)
179 {
181
182
193 0);
195 {
196 DPRINT1(
"ZwOpenFile() failed with status 0x%08lx\n",
Status);
198 }
206 {
207 DPRINT1(
"ObReferenceObjectByHandle() failed with status 0x%08lx\n",
Status);
210 }
213
214
219 0,
220 &Caps,
221 sizeof(Caps),
226 {
227 DPRINT1(
"IoBuildDeviceIoControlRequest() failed\n");
230 }
233 {
234 DPRINT(
"IOCTL_GET_SYS_BUTTON_CAPS pending\n");
237 }
239 {
240 DPRINT1(
"Sending IOCTL_GET_SYS_BUTTON_CAPS failed with status 0x%08x\n",
Status);
243 }
244
245 DPRINT(
"Device capabilities: 0x%x\n", Caps);
247 {
248 DPRINT(
"POWER button present\n");
250 }
251
253 {
254 DPRINT(
"SLEEP button present\n");
256 }
257
259 {
262 }
263
266 'IWOP');
267 if (!SysButtonContext)
268 {
269 DPRINT1(
"ExAllocatePoolWithTag() failed\n");
272 }
273
274
278 {
279 DPRINT1(
"IoAllocateWorkItem() failed\n");
283 }
287 SysButtonContext);
288
291 }
292 else
293 {
294 DPRINT1(
"Removal of a power capable device not implemented\n");
296 }
297}
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
const GUID GUID_DEVICE_INTERFACE_ARRIVAL
const GUID GUID_DEVICE_INTERFACE_REMOVAL
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define RtlCompareMemory(s1, s2, l)
#define KeInitializeEvent(pEvt, foo, foo2)
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
#define OBJ_KERNEL_HANDLE
POBJECT_TYPE IoFileObjectType
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
#define ExFreePoolWithTag(_P, _T)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI NTSTATUS NTAPI ZwOpenFile(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG ShareAccess, _In_ ULONG OpenOptions)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
PDEVICE_OBJECT NTAPI IoGetRelatedDeviceObject(IN PFILE_OBJECT FileObject)
PIRP NTAPI IoBuildDeviceIoControlRequest(IN ULONG IoControlCode, IN PDEVICE_OBJECT DeviceObject, IN PVOID InputBuffer, IN ULONG InputBufferLength, IN PVOID OutputBuffer, IN ULONG OutputBufferLength, IN BOOLEAN InternalDeviceIoControl, IN PKEVENT Event, IN PIO_STATUS_BLOCK IoStatusBlock)
static VOID NTAPI PopGetSysButton(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
#define STATUS_NOT_IMPLEMENTED
#define STATUS_REVISION_MISMATCH
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
SYSTEM_POWER_CAPABILITIES PopCapabilities
#define IOCTL_GET_SYS_BUTTON_CAPS
BOOLEAN PowerButtonPresent
BOOLEAN SleepButtonPresent
PDEVICE_OBJECT DeviceObject
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PWDFDEVICE_INIT _In_ PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ PVOID NotificationStructure
struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION * PDEVICE_INTERFACE_CHANGE_NOTIFICATION
#define ObDereferenceObject