mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 12:17:30 +00:00
- Move definitions from ntpnp.h into NDK and DDK
- Remove ntpnp.h svn path=/trunk/; revision=16393
This commit is contained in:
parent
d46e87dfdb
commit
89ac547ef5
8 changed files with 246 additions and 294 deletions
|
@ -1,277 +0,0 @@
|
||||||
/*
|
|
||||||
* ntpnp.h
|
|
||||||
*
|
|
||||||
* Plug-and-play interface routines
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* Created by Filip Navara <xnavara@volny.cz>
|
|
||||||
*
|
|
||||||
* 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 <ddk/cfg.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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 */
|
|
|
@ -1220,10 +1220,10 @@ ZwGetContextThread(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtGetPlugPlayEvent(
|
NtGetPlugPlayEvent(
|
||||||
ULONG Reserved1,
|
IN ULONG Reserved1,
|
||||||
ULONG Reserved2,
|
IN ULONG Reserved2,
|
||||||
struct _PLUGPLAY_EVENT_BLOCK *Buffer,
|
OUT PPLUGPLAY_EVENT_BLOCK Buffer,
|
||||||
ULONG BufferSize
|
IN ULONG BufferSize
|
||||||
);
|
);
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
|
|
|
@ -37,6 +37,16 @@
|
||||||
#define DOSDEVICE_DRIVE_CDROM 5
|
#define DOSDEVICE_DRIVE_CDROM 5
|
||||||
#define DOSDEVICE_DRIVE_RAMDISK 6
|
#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 **************************************************************/
|
/* ENUMERATIONS **************************************************************/
|
||||||
|
|
||||||
typedef enum _HARDERROR_RESPONSE_OPTION
|
typedef enum _HARDERROR_RESPONSE_OPTION
|
||||||
|
@ -63,7 +73,7 @@ typedef enum _HARDERROR_RESPONSE
|
||||||
ResponseYes
|
ResponseYes
|
||||||
} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
|
} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
|
||||||
|
|
||||||
typedef enum SHUTDOWN_ACTION_TAG
|
typedef enum _SHUTDOWN_ACTION
|
||||||
{
|
{
|
||||||
ShutdownNoReboot,
|
ShutdownNoReboot,
|
||||||
ShutdownReboot,
|
ShutdownReboot,
|
||||||
|
@ -90,6 +100,20 @@ typedef enum _SYSTEM_DOCK_STATE
|
||||||
SystemDocked
|
SystemDocked
|
||||||
} SYSTEM_DOCK_STATE, *PSYSTEM_DOCK_STATE;
|
} 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 ****/
|
/**** Information Classes ****/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -218,7 +242,8 @@ typedef enum _SECTION_INFORMATION_CLASS
|
||||||
/*
|
/*
|
||||||
* Timer
|
* Timer
|
||||||
*/
|
*/
|
||||||
typedef enum _TIMER_INFORMATION_CLASS {
|
typedef enum _TIMER_INFORMATION_CLASS
|
||||||
|
{
|
||||||
TimerBasicInformation
|
TimerBasicInformation
|
||||||
} TIMER_INFORMATION_CLASS;
|
} TIMER_INFORMATION_CLASS;
|
||||||
|
|
||||||
|
@ -261,7 +286,83 @@ typedef enum _PLUGPLAY_CONTROL_CLASS
|
||||||
|
|
||||||
typedef unsigned short LANGID;
|
typedef unsigned short LANGID;
|
||||||
typedef LANGID *PLANGID;
|
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 ****/
|
/**** Information Structures ****/
|
||||||
/*
|
/*
|
||||||
|
@ -296,7 +397,8 @@ typedef struct _THREAD_BASIC_INFORMATION
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Class 0 */
|
/* Class 0 */
|
||||||
typedef struct _ATOM_BASIC_INFORMATION {
|
typedef struct _ATOM_BASIC_INFORMATION
|
||||||
|
{
|
||||||
USHORT UsageCount;
|
USHORT UsageCount;
|
||||||
USHORT Flags;
|
USHORT Flags;
|
||||||
USHORT NameLength;
|
USHORT NameLength;
|
||||||
|
@ -1017,7 +1119,8 @@ typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION
|
||||||
} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
|
} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
|
||||||
|
|
||||||
/* Class 36 */
|
/* Class 36 */
|
||||||
typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION {
|
typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION
|
||||||
|
{
|
||||||
ULONG ContextSwitches;
|
ULONG ContextSwitches;
|
||||||
ULONG FindAny;
|
ULONG FindAny;
|
||||||
ULONG FindLast;
|
ULONG FindLast;
|
||||||
|
@ -1152,5 +1255,34 @@ typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION
|
||||||
/* Class 54-81 */
|
/* Class 54-81 */
|
||||||
/* FIXME */
|
/* 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
|
#endif
|
||||||
|
|
|
@ -5,7 +5,5 @@
|
||||||
#include "initguid.h"
|
#include "initguid.h"
|
||||||
|
|
||||||
#include <ddk/wdmguid.h>
|
#include <ddk/wdmguid.h>
|
||||||
#define __GUIDS_ONLY__
|
|
||||||
#include <ddk/ntpnp.h>
|
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <ddk/ntifs.h>
|
#include <ddk/ntifs.h>
|
||||||
#include <ddk/wdmguid.h>
|
#include <ddk/wdmguid.h>
|
||||||
#include <ddk/ntpnp.h>
|
|
||||||
#include <ndk/ntndk.h>
|
#include <ndk/ntndk.h>
|
||||||
#undef IO_TYPE_FILE
|
#undef IO_TYPE_FILE
|
||||||
#define IO_TYPE_FILE 0x0F5L /* Temp Hack */
|
#define IO_TYPE_FILE 0x0F5L /* Temp Hack */
|
||||||
|
|
|
@ -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
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
NtGetPlugPlayEvent(IN ULONG Reserved1,
|
NtGetPlugPlayEvent(IN ULONG Reserved1,
|
||||||
IN ULONG Reserved2,
|
IN ULONG Reserved2,
|
||||||
OUT PPLUGPLAY_EVENT_BLOCK Buffer,
|
OUT PPLUGPLAY_EVENT_BLOCK Buffer,
|
||||||
IN ULONG BufferLength)
|
IN ULONG BufferSize)
|
||||||
{
|
{
|
||||||
PPNP_EVENT_ENTRY Entry;
|
PPNP_EVENT_ENTRY Entry;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
@ -151,7 +178,7 @@ NtGetPlugPlayEvent(IN ULONG Reserved1,
|
||||||
ListEntry);
|
ListEntry);
|
||||||
|
|
||||||
/* Check the buffer size */
|
/* Check the buffer size */
|
||||||
if (BufferLength < Entry->Event.TotalSize)
|
if (BufferSize < Entry->Event.TotalSize)
|
||||||
{
|
{
|
||||||
DPRINT1("Buffer is too small for the pnp-event\n");
|
DPRINT1("Buffer is too small for the pnp-event\n");
|
||||||
return STATUS_BUFFER_TOO_SMALL;
|
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
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
|
|
|
@ -16,8 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id$
|
/*
|
||||||
*
|
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
* FILE: services/umpnpmgr/umpnpmgr.c
|
* FILE: services/umpnpmgr/umpnpmgr.c
|
||||||
|
@ -31,7 +30,6 @@
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <ndk/ntndk.h>
|
#include <ndk/ntndk.h>
|
||||||
#include <ddk/wdmguid.h>
|
#include <ddk/wdmguid.h>
|
||||||
#include <ddk/ntpnp.h>
|
|
||||||
|
|
||||||
#include <rpc.h>
|
#include <rpc.h>
|
||||||
#include <rpcdce.h>
|
#include <rpcdce.h>
|
||||||
|
|
|
@ -115,4 +115,26 @@ DEFINE_GUID(GUID_POWER_DEVICE_TIMEOUTS,
|
||||||
DEFINE_GUID(GUID_POWER_DEVICE_WAKE_ENABLE,
|
DEFINE_GUID(GUID_POWER_DEVICE_WAKE_ENABLE,
|
||||||
0xa9546a82L, 0xfeb0, 0x11d0, 0xbd, 0x26, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a);
|
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 */
|
#endif /* __WDMGUID_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue