From 89ac547ef5d289df38d8c79b17b079c3fa745940 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 3 Jul 2005 15:21:19 +0000 Subject: [PATCH] - Move definitions from ntpnp.h into NDK and DDK - Remove ntpnp.h svn path=/trunk/; revision=16393 --- reactos/include/ddk/ntpnp.h | 277 --------------------------- reactos/include/ndk/zwfuncs.h | 8 +- reactos/include/ndk/zwtypes.h | 142 +++++++++++++- reactos/lib/wdmguid/wdmguid.c | 2 - reactos/ntoskrnl/include/ntoskrnl.h | 1 - reactos/ntoskrnl/io/plugplay.c | 84 +++++++- reactos/services/umpnpmgr/umpnpmgr.c | 4 +- reactos/w32api/include/ddk/wdmguid.h | 22 +++ 8 files changed, 246 insertions(+), 294 deletions(-) delete mode 100644 reactos/include/ddk/ntpnp.h diff --git a/reactos/include/ddk/ntpnp.h b/reactos/include/ddk/ntpnp.h deleted file mode 100644 index cc93fc28c96..00000000000 --- a/reactos/include/ddk/ntpnp.h +++ /dev/null @@ -1,277 +0,0 @@ -/* - * ntpnp.h - * - * Plug-and-play interface routines - * - * Contributors: - * Created by Filip Navara - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - -#ifndef __NTPNP_H -#define __NTPNP_H - -#include - -/* - * TODO: - * - Describe the undocumented GUIDs. - * - Finish the description of NtPlugPlayControl. - */ - -/* - * Undocumented GUIDs used by NtGetPlugPlayEvent. - */ - -DEFINE_GUID(GUID_DEVICE_STANDBY_VETOED, 0x03B21C13, 0x18D6, 0x11D3, 0x97, 0xDB, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); -DEFINE_GUID(GUID_DEVICE_KERNEL_INITIATED_EJECT, 0x14689B54, 0x0703, 0x11D3, 0x97, 0xD2, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); -DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE, 0x4AFA3D51, 0x74A7, 0x11D0, 0xBE, 0x5E, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57); -DEFINE_GUID(GUID_DEVICE_SYS_BUTTON, 0x4AFA3D53, 0x74A7, 0x11D0, 0xBE, 0x5E, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57); -DEFINE_GUID(GUID_DEVICE_REMOVAL_VETOED, 0x60DBD5FA, 0xDDD2, 0x11D2, 0x97, 0xB8, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); -DEFINE_GUID(GUID_DEVICE_HIBERNATE_VETOED, 0x61173AD9, 0x194F, 0x11D3, 0x97, 0xDC, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); -DEFINE_GUID(GUID_DEVICE_BATTERY, 0x72631E54, 0x78A4, 0x11D0, 0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A); -DEFINE_GUID(GUID_DEVICE_SAFE_REMOVAL, 0x8FBEF967, 0xD6C5, 0x11D2, 0x97, 0xB5, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); -#ifndef __USE_W32API -DEFINE_GUID(GUID_DEVICE_INTERFACE_ARRIVAL, 0xCB3A4004, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_INTERFACE_REMOVAL, 0xCB3A4005, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -#endif -DEFINE_GUID(GUID_DEVICE_ARRIVAL, 0xCB3A4009, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_ENUMERATED, 0xCB3A400A, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_ENUMERATE_REQUEST, 0xCB3A400B, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_START_REQUEST, 0xCB3A400C, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_REMOVE_PENDING, 0xCB3A400D, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_QUERY_AND_REMOVE, 0xCB3A400E, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_EJECT, 0xCB3A400F, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_NOOP, 0xCB3A4010, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); -DEFINE_GUID(GUID_DEVICE_WARM_EJECT_VETOED, 0xCBF4C1F9, 0x18D5, 0x11D3, 0x97, 0xDB, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); -DEFINE_GUID(GUID_DEVICE_SURPRISE_REMOVAL, 0xCE5AF000, 0x80DD, 0x11D2, 0xA8, 0x8D, 0x00, 0xA0, 0xC9, 0x69, 0x6B, 0x4B); -DEFINE_GUID(GUID_DEVICE_EJECT_VETOED, 0xCF7B71E8, 0xD8FD, 0x11D2, 0x97, 0xB5, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); -DEFINE_GUID(GUID_DEVICE_EVENT_RBC, 0xD0744792, 0xA98E, 0x11D2, 0x91, 0x7A, 0x00, 0xA0, 0xC9, 0x06, 0x8F, 0xF3); - - -#ifndef __GUIDS_ONLY__ /* This is defined to build libwdmguid.a */ - -typedef enum _PLUGPLAY_EVENT_CATEGORY -{ - HardwareProfileChangeEvent, - TargetDeviceChangeEvent, - DeviceClassChangeEvent, - CustomDeviceEvent, - DeviceInstallEvent, - DeviceArrivalEvent, - PowerEvent, - VetoEvent, - BlockedDriverEvent, - MaxPlugEventCategory -} PLUGPLAY_EVENT_CATEGORY; - -/* - * Plug and Play event structure used by NtGetPlugPlayEvent. - * - * EventGuid - * Can be one of the following values: - * GUID_HWPROFILE_QUERY_CHANGE - * GUID_HWPROFILE_CHANGE_CANCELLED - * GUID_HWPROFILE_CHANGE_COMPLETE - * GUID_TARGET_DEVICE_QUERY_REMOVE - * GUID_TARGET_DEVICE_REMOVE_CANCELLED - * GUID_TARGET_DEVICE_REMOVE_COMPLETE - * GUID_PNP_CUSTOM_NOTIFICATION - * GUID_PNP_POWER_NOTIFICATION - * GUID_DEVICE_* (see above) - * - * EventCategory - * Type of the event that happened. - * - * Result - * ? - * - * Flags - * ? - * - * TotalSize - * Size of the event block including the device IDs and other - * per category specific fields. - */ - -typedef struct _PLUGPLAY_EVENT_BLOCK { - GUID EventGuid; - PLUGPLAY_EVENT_CATEGORY EventCategory; - PULONG Result; - ULONG Flags; - ULONG TotalSize; - PVOID DeviceObject; - union { - struct { - GUID ClassGuid; - WCHAR SymbolicLinkName[ANYSIZE_ARRAY]; - } DeviceClass; - struct { - WCHAR DeviceIds[ANYSIZE_ARRAY]; - } TargetDevice; - struct { - WCHAR DeviceId[ANYSIZE_ARRAY]; - } InstallDevice; - struct { - PVOID NotificationStructure; - WCHAR DeviceIds[ANYSIZE_ARRAY]; - } CustomNotification; - struct { - PVOID Notification; - } ProfileNotification; - struct { - ULONG NotificationCode; - ULONG NotificationData; - } PowerNotification; - struct { - PNP_VETO_TYPE VetoType; - WCHAR DeviceIdVetoNameBuffer[ANYSIZE_ARRAY]; - } VetoNotification; - struct { - GUID BlockedDriverGuid; - } BlockedDriverNotification; - }; -} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK; - -/* - * NtGetPlugPlayEvent - * - * Returns one Plug & Play event from a global queue. - * - * Parameters - * Reserved1 - * Reserved2 - * Always set to zero. - * - * Buffer - * The buffer that will be filled with the event information on - * successful return from the function. - * - * BufferSize - * Size of the buffer pointed by the Buffer parameter. If the - * buffer size is not large enough to hold the whole event - * information, error STATUS_BUFFER_TOO_SMALL is returned and - * the buffer remains untouched. - * - * Return Values - * STATUS_PRIVILEGE_NOT_HELD - * STATUS_BUFFER_TOO_SMALL - * STATUS_SUCCESS - * - * Remarks - * This function isn't multi-thread safe! -NTSTATUS STDCALL -NtGetPlugPlayEvent( - ULONG Reserved1, - ULONG Reserved2, - PPLUGPLAY_EVENT_BLOCK Buffer, - ULONG BufferSize); - */ - -/* - * NtPlugPlayControl - * - * A function for doing various Plug & Play operations from user mode. - * - * Parameters - * ControlCode - * 0x00 Reenumerate device tree - * - * Buffer points to UNICODE_STRING decribing the instance - * path (like "HTREE\ROOT\0" or "Root\ACPI_HAL\0000"). For - * more information about instance paths see !devnode command - * in kernel debugger or look at "Inside Windows 2000" book, - * chapter "Driver Loading, Initialization, and Installation". - * - * 0x01 Register new device - * 0x02 Deregister device - * 0x03 Initialize device - * 0x04 Start device - * 0x06 Query and remove device - * 0x07 User response - * - * Called after processing the message from NtGetPlugPlayEvent. - * - * 0x08 Generate legacy device - * 0x09 Get interface device list - * 0x0A Get property data - * 0x0B Device class association (Registration) - * 0x0C Get related device - * 0x0D Get device interface alias - * 0x0E Get/set/clear device status - * 0x0F Get device depth - * 0x10 Query device relations - * 0x11 Query target device relation - * 0x12 Query conflict list - * 0x13 Retrieve dock data - * 0x14 Reset device - * 0x15 Halt device - * 0x16 Get blocked driver data - * - * Buffer - * The buffer contains information that is specific to each control - * code. The buffer is read-only. - * - * BufferSize - * Size of the buffer pointed by the Buffer parameter. If the - * buffer size specifies incorrect value for specified control - * code, error ??? is returned. - * - * Return Values - * STATUS_PRIVILEGE_NOT_HELD - * STATUS_SUCCESS - * ... - */ - -typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA -{ - UNICODE_STRING DeviceInstance; - ULONG Property; - PVOID Buffer; - ULONG BufferSize; -} PLUGPLAY_CONTROL_PROPERTY_DATA, *PPLUGPLAY_CONTROL_PROPERTY_DATA; - - -/* PLUGPLAY_GET_RELATED_DEVICE (Code 0x0C) */ - -/* Relation values */ -#define PNP_GET_PARENT_DEVICE 1 -#define PNP_GET_CHILD_DEVICE 2 -#define PNP_GET_SIBLING_DEVICE 3 - -typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA -{ - UNICODE_STRING TargetDeviceInstance; - ULONG Relation; /* 1: Parent 2: Child 3: Sibling */ - UNICODE_STRING RelatedDeviceInstance; -} PLUGPLAY_CONTROL_RELATED_DEVICE_DATA, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA; - - -/* PLUGPLAY_DEVICE_STATUS (Code 0x0E) */ - -/* Operation values */ -#define PNP_GET_DEVICE_STATUS 0 -#define PNP_SET_DEVICE_STATUS 1 -#define PNP_CLEAR_DEVICE_STATUS 2 - - -typedef struct _PLUGPLAY_CONTOL_STATUS_DATA -{ - UNICODE_STRING DeviceInstance; - ULONG Operation; /* 0: Get 1: Set 2: Clear */ - ULONG DeviceStatus; /* DN_ see cfg.h */ - ULONG DeviceProblem; /* CM_PROB_ see cfg.h */ -} PLUGPLAY_CONTROL_STATUS_DATA, *PPLUGPLAY_CONTROL_STATUS_DATA; - -#endif /* __GUIDS_ONLY__ */ - -#endif /* __NTPNP_H */ diff --git a/reactos/include/ndk/zwfuncs.h b/reactos/include/ndk/zwfuncs.h index ba0687f095c..fe74c05422f 100644 --- a/reactos/include/ndk/zwfuncs.h +++ b/reactos/include/ndk/zwfuncs.h @@ -1220,10 +1220,10 @@ ZwGetContextThread( NTSTATUS STDCALL NtGetPlugPlayEvent( - ULONG Reserved1, - ULONG Reserved2, - struct _PLUGPLAY_EVENT_BLOCK *Buffer, - ULONG BufferSize + IN ULONG Reserved1, + IN ULONG Reserved2, + OUT PPLUGPLAY_EVENT_BLOCK Buffer, + IN ULONG BufferSize ); ULONG diff --git a/reactos/include/ndk/zwtypes.h b/reactos/include/ndk/zwtypes.h index ea2a400e4c8..63e20bece2f 100644 --- a/reactos/include/ndk/zwtypes.h +++ b/reactos/include/ndk/zwtypes.h @@ -37,6 +37,16 @@ #define DOSDEVICE_DRIVE_CDROM 5 #define DOSDEVICE_DRIVE_RAMDISK 6 +/* PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relation values */ +#define PNP_GET_PARENT_DEVICE 1 +#define PNP_GET_CHILD_DEVICE 2 +#define PNP_GET_SIBLING_DEVICE 3 + +/* PLUGPLAY_CONTROL_STATUS_DATA.Operation values */ +#define PNP_GET_DEVICE_STATUS 0 +#define PNP_SET_DEVICE_STATUS 1 +#define PNP_CLEAR_DEVICE_STATUS 2 + /* ENUMERATIONS **************************************************************/ typedef enum _HARDERROR_RESPONSE_OPTION @@ -63,7 +73,7 @@ typedef enum _HARDERROR_RESPONSE ResponseYes } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE; -typedef enum SHUTDOWN_ACTION_TAG +typedef enum _SHUTDOWN_ACTION { ShutdownNoReboot, ShutdownReboot, @@ -90,6 +100,20 @@ typedef enum _SYSTEM_DOCK_STATE SystemDocked } SYSTEM_DOCK_STATE, *PSYSTEM_DOCK_STATE; +typedef enum _PLUGPLAY_EVENT_CATEGORY +{ + HardwareProfileChangeEvent, + TargetDeviceChangeEvent, + DeviceClassChangeEvent, + CustomDeviceEvent, + DeviceInstallEvent, + DeviceArrivalEvent, + PowerEvent, + VetoEvent, + BlockedDriverEvent, + MaxPlugEventCategory +} PLUGPLAY_EVENT_CATEGORY; + /**** Information Classes ****/ /* @@ -218,7 +242,8 @@ typedef enum _SECTION_INFORMATION_CLASS /* * Timer */ -typedef enum _TIMER_INFORMATION_CLASS { +typedef enum _TIMER_INFORMATION_CLASS +{ TimerBasicInformation } TIMER_INFORMATION_CLASS; @@ -261,7 +286,83 @@ typedef enum _PLUGPLAY_CONTROL_CLASS typedef unsigned short LANGID; typedef LANGID *PLANGID; -struct _PLUGPLAY_EVENT_BLOCK; /* FIXME: Ask Filip if it's OK to define it */ + +/* + * Plug and Play event structure used by NtGetPlugPlayEvent. + * + * EventGuid + * Can be one of the following values: + * GUID_HWPROFILE_QUERY_CHANGE + * GUID_HWPROFILE_CHANGE_CANCELLED + * GUID_HWPROFILE_CHANGE_COMPLETE + * GUID_TARGET_DEVICE_QUERY_REMOVE + * GUID_TARGET_DEVICE_REMOVE_CANCELLED + * GUID_TARGET_DEVICE_REMOVE_COMPLETE + * GUID_PNP_CUSTOM_NOTIFICATION + * GUID_PNP_POWER_NOTIFICATION + * GUID_DEVICE_* (see above) + * + * EventCategory + * Type of the event that happened. + * + * Result + * ? + * + * Flags + * ? + * + * TotalSize + * Size of the event block including the device IDs and other + * per category specific fields. + */ +typedef struct _PLUGPLAY_EVENT_BLOCK +{ + GUID EventGuid; + PLUGPLAY_EVENT_CATEGORY EventCategory; + PULONG Result; + ULONG Flags; + ULONG TotalSize; + PVOID DeviceObject; + union + { + struct + { + GUID ClassGuid; + WCHAR SymbolicLinkName[ANYSIZE_ARRAY]; + } DeviceClass; + struct + { + WCHAR DeviceIds[ANYSIZE_ARRAY]; + } TargetDevice; + struct + { + WCHAR DeviceId[ANYSIZE_ARRAY]; + } InstallDevice; + struct + { + PVOID NotificationStructure; + WCHAR DeviceIds[ANYSIZE_ARRAY]; + } CustomNotification; + struct + { + PVOID Notification; + } ProfileNotification; + struct + { + ULONG NotificationCode; + ULONG NotificationData; + } PowerNotification; + struct + { + PNP_VETO_TYPE VetoType; + WCHAR DeviceIdVetoNameBuffer[ANYSIZE_ARRAY]; + } VetoNotification; + struct + { + GUID BlockedDriverGuid; + } BlockedDriverNotification; + }; +} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK; /**** Information Structures ****/ /* @@ -296,7 +397,8 @@ typedef struct _THREAD_BASIC_INFORMATION */ /* Class 0 */ -typedef struct _ATOM_BASIC_INFORMATION { +typedef struct _ATOM_BASIC_INFORMATION +{ USHORT UsageCount; USHORT Flags; USHORT NameLength; @@ -1017,7 +1119,8 @@ typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; /* Class 36 */ -typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION { +typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION +{ ULONG ContextSwitches; ULONG FindAny; ULONG FindLast; @@ -1152,5 +1255,34 @@ typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION /* Class 54-81 */ /* FIXME */ +/* + * PlugPlay + */ + +/* Class 0x0A */ +typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA +{ + UNICODE_STRING DeviceInstance; + ULONG Property; + PVOID Buffer; + ULONG BufferSize; +} PLUGPLAY_CONTROL_PROPERTY_DATA, *PPLUGPLAY_CONTROL_PROPERTY_DATA; + +/* Class 0x0C */ +typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA +{ + UNICODE_STRING TargetDeviceInstance; + ULONG Relation; /* 1: Parent 2: Child 3: Sibling */ + UNICODE_STRING RelatedDeviceInstance; +} PLUGPLAY_CONTROL_RELATED_DEVICE_DATA, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA; + +/* Class 0x0E */ +typedef struct _PLUGPLAY_CONTOL_STATUS_DATA +{ + UNICODE_STRING DeviceInstance; + ULONG Operation; /* 0: Get 1: Set 2: Clear */ + ULONG DeviceStatus; /* DN_ see cfg.h */ + ULONG DeviceProblem; /* CM_PROB_ see cfg.h */ +} PLUGPLAY_CONTROL_STATUS_DATA, *PPLUGPLAY_CONTROL_STATUS_DATA; #endif diff --git a/reactos/lib/wdmguid/wdmguid.c b/reactos/lib/wdmguid/wdmguid.c index 8cb1563566b..e97cd6db5cb 100644 --- a/reactos/lib/wdmguid/wdmguid.c +++ b/reactos/lib/wdmguid/wdmguid.c @@ -5,7 +5,5 @@ #include "initguid.h" #include -#define __GUIDS_ONLY__ -#include /* EOF */ diff --git a/reactos/ntoskrnl/include/ntoskrnl.h b/reactos/ntoskrnl/include/ntoskrnl.h index 48dd676c6bb..b4265603204 100755 --- a/reactos/ntoskrnl/include/ntoskrnl.h +++ b/reactos/ntoskrnl/include/ntoskrnl.h @@ -18,7 +18,6 @@ #include #include #include -#include #include #undef IO_TYPE_FILE #define IO_TYPE_FILE 0x0F5L /* Temp Hack */ diff --git a/reactos/ntoskrnl/io/plugplay.c b/reactos/ntoskrnl/io/plugplay.c index 2cf00f98511..5a13fa53126 100644 --- a/reactos/ntoskrnl/io/plugplay.c +++ b/reactos/ntoskrnl/io/plugplay.c @@ -104,13 +104,40 @@ IopRemovePlugPlayEvent(VOID) /* + * NtGetPlugPlayEvent + * + * Returns one Plug & Play event from a global queue. + * + * Parameters + * Reserved1 + * Reserved2 + * Always set to zero. + * + * Buffer + * The buffer that will be filled with the event information on + * successful return from the function. + * + * BufferSize + * Size of the buffer pointed by the Buffer parameter. If the + * buffer size is not large enough to hold the whole event + * information, error STATUS_BUFFER_TOO_SMALL is returned and + * the buffer remains untouched. + * + * Return Values + * STATUS_PRIVILEGE_NOT_HELD + * STATUS_BUFFER_TOO_SMALL + * STATUS_SUCCESS + * + * Remarks + * This function isn't multi-thread safe! + * * @implemented */ NTSTATUS STDCALL NtGetPlugPlayEvent(IN ULONG Reserved1, IN ULONG Reserved2, OUT PPLUGPLAY_EVENT_BLOCK Buffer, - IN ULONG BufferLength) + IN ULONG BufferSize) { PPNP_EVENT_ENTRY Entry; NTSTATUS Status; @@ -151,7 +178,7 @@ NtGetPlugPlayEvent(IN ULONG Reserved1, ListEntry); /* Check the buffer size */ - if (BufferLength < Entry->Event.TotalSize) + if (BufferSize < Entry->Event.TotalSize) { DPRINT1("Buffer is too small for the pnp-event\n"); return STATUS_BUFFER_TOO_SMALL; @@ -419,6 +446,59 @@ IopDeviceStatus(PPLUGPLAY_CONTROL_STATUS_DATA StatusData) /* + * NtPlugPlayControl + * + * A function for doing various Plug & Play operations from user mode. + * + * Parameters + * PlugPlayControlClass + * 0x00 Reenumerate device tree + * + * Buffer points to UNICODE_STRING decribing the instance + * path (like "HTREE\ROOT\0" or "Root\ACPI_HAL\0000"). For + * more information about instance paths see !devnode command + * in kernel debugger or look at "Inside Windows 2000" book, + * chapter "Driver Loading, Initialization, and Installation". + * + * 0x01 Register new device + * 0x02 Deregister device + * 0x03 Initialize device + * 0x04 Start device + * 0x06 Query and remove device + * 0x07 User response + * + * Called after processing the message from NtGetPlugPlayEvent. + * + * 0x08 Generate legacy device + * 0x09 Get interface device list + * 0x0A Get property data + * 0x0B Device class association (Registration) + * 0x0C Get related device + * 0x0D Get device interface alias + * 0x0E Get/set/clear device status + * 0x0F Get device depth + * 0x10 Query device relations + * 0x11 Query target device relation + * 0x12 Query conflict list + * 0x13 Retrieve dock data + * 0x14 Reset device + * 0x15 Halt device + * 0x16 Get blocked driver data + * + * Buffer + * The buffer contains information that is specific to each control + * code. The buffer is read-only. + * + * BufferSize + * Size of the buffer pointed by the Buffer parameter. If the + * buffer size specifies incorrect value for specified control + * code, error ??? is returned. + * + * Return Values + * STATUS_PRIVILEGE_NOT_HELD + * STATUS_SUCCESS + * ... + * * @unimplemented */ NTSTATUS STDCALL diff --git a/reactos/services/umpnpmgr/umpnpmgr.c b/reactos/services/umpnpmgr/umpnpmgr.c index 8db87c992f1..31f95e01a60 100644 --- a/reactos/services/umpnpmgr/umpnpmgr.c +++ b/reactos/services/umpnpmgr/umpnpmgr.c @@ -16,8 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id$ - * +/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: services/umpnpmgr/umpnpmgr.c @@ -31,7 +30,6 @@ #define NTOS_MODE_USER #include #include -#include #include #include diff --git a/reactos/w32api/include/ddk/wdmguid.h b/reactos/w32api/include/ddk/wdmguid.h index dadbddb7dcb..c7dd5273a3f 100644 --- a/reactos/w32api/include/ddk/wdmguid.h +++ b/reactos/w32api/include/ddk/wdmguid.h @@ -115,4 +115,26 @@ DEFINE_GUID(GUID_POWER_DEVICE_TIMEOUTS, DEFINE_GUID(GUID_POWER_DEVICE_WAKE_ENABLE, 0xa9546a82L, 0xfeb0, 0x11d0, 0xbd, 0x26, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a); +DEFINE_GUID(GUID_DEVICE_STANDBY_VETOED, 0x03B21C13, 0x18D6, 0x11D3, 0x97, 0xDB, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); +DEFINE_GUID(GUID_DEVICE_KERNEL_INITIATED_EJECT, 0x14689B54, 0x0703, 0x11D3, 0x97, 0xD2, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); +DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE, 0x4AFA3D51, 0x74A7, 0x11D0, 0xBE, 0x5E, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57); +DEFINE_GUID(GUID_DEVICE_SYS_BUTTON, 0x4AFA3D53, 0x74A7, 0x11D0, 0xBE, 0x5E, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57); +DEFINE_GUID(GUID_DEVICE_REMOVAL_VETOED, 0x60DBD5FA, 0xDDD2, 0x11D2, 0x97, 0xB8, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); +DEFINE_GUID(GUID_DEVICE_HIBERNATE_VETOED, 0x61173AD9, 0x194F, 0x11D3, 0x97, 0xDC, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); +DEFINE_GUID(GUID_DEVICE_BATTERY, 0x72631E54, 0x78A4, 0x11D0, 0xBC, 0xF7, 0x00, 0xAA, 0x00, 0xB7, 0xB3, 0x2A); +DEFINE_GUID(GUID_DEVICE_SAFE_REMOVAL, 0x8FBEF967, 0xD6C5, 0x11D2, 0x97, 0xB5, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); + +DEFINE_GUID(GUID_DEVICE_ARRIVAL, 0xCB3A4009, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_ENUMERATED, 0xCB3A400A, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_ENUMERATE_REQUEST, 0xCB3A400B, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_START_REQUEST, 0xCB3A400C, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_REMOVE_PENDING, 0xCB3A400D, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_QUERY_AND_REMOVE, 0xCB3A400E, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_EJECT, 0xCB3A400F, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_NOOP, 0xCB3A4010, 0x46F0, 0x11D0, 0xB0, 0x8F, 0x00, 0x60, 0x97, 0x13, 0x05, 0x3F); +DEFINE_GUID(GUID_DEVICE_WARM_EJECT_VETOED, 0xCBF4C1F9, 0x18D5, 0x11D3, 0x97, 0xDB, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); +DEFINE_GUID(GUID_DEVICE_SURPRISE_REMOVAL, 0xCE5AF000, 0x80DD, 0x11D2, 0xA8, 0x8D, 0x00, 0xA0, 0xC9, 0x69, 0x6B, 0x4B); +DEFINE_GUID(GUID_DEVICE_EJECT_VETOED, 0xCF7B71E8, 0xD8FD, 0x11D2, 0x97, 0xB5, 0x00, 0xA0, 0xC9, 0x40, 0x52, 0x2E); +DEFINE_GUID(GUID_DEVICE_EVENT_RBC, 0xD0744792, 0xA98E, 0x11D2, 0x91, 0x7A, 0x00, 0xA0, 0xC9, 0x06, 0x8F, 0xF3); + #endif /* __WDMGUID_H */