summaryrefslogtreecommitdiffstats
path: root/private/ntos/inc/pnp.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/inc/pnp.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ntos/inc/pnp.h')
-rw-r--r--private/ntos/inc/pnp.h300
1 files changed, 300 insertions, 0 deletions
diff --git a/private/ntos/inc/pnp.h b/private/ntos/inc/pnp.h
new file mode 100644
index 000000000..956af84a2
--- /dev/null
+++ b/private/ntos/inc/pnp.h
@@ -0,0 +1,300 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ pnp.h
+
+Abstract:
+
+ This module contains the internal structure definitions and APIs used by
+ the kernel-mode Plug and Play manager.
+
+ This file is included by including "ntos.h".
+
+Author:
+
+ Lonny McMichael (lonnym) 02/09/95
+
+
+Revision History:
+
+
+--*/
+
+#ifndef _PNP_
+#define _PNP_
+
+//
+// The following global variables provide/control access to PnP Manager data.
+//
+// NOTE: If both registry AND bus list resources are required, then the
+// bus list resource (PpBusResource) must be acquired FIRST.
+//
+
+extern ERESOURCE PpRegistryDeviceResource;
+
+// begin_ntddk begin_nthal begin_ntifs
+
+//
+// Define Device Instance Flags (used by IoQueryDeviceConfiguration apis)
+//
+
+#define DEVINSTANCE_FLAG_HWPROFILE_DISABLED 0x1
+#define DEVINSTANCE_FLAG_PNP_ENUMERATED 0x2
+
+//
+// The following definitions are used in IoOpenDeviceInstanceKey
+//
+
+#define PLUGPLAY_REGKEY_DEVICE 1
+#define PLUGPLAY_REGKEY_DRIVER 2
+#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE 4
+
+// end_ntddk end_nthal end_ntifs
+
+#if _PNP_POWER_
+
+//
+// The following global variables provide/control access to PnP Manager data.
+//
+// NOTE: If both registry AND bus list resources are required, then the
+// bus list resource (PpBusResource) must be acquired FIRST.
+//
+extern LIST_ENTRY PpBusListHead;
+extern ERESOURCE PpBusResource;
+extern ERESOURCE PpRegistryDeviceResource;
+
+//
+// Define PnP Manager bus instance full descriptor node that contains all necessary
+// information about a particular bus instance.
+//
+
+typedef struct _PLUGPLAY_BUS_INSTANCE_FULL_DESCRIPTOR {
+ PLUGPLAY_BUS_INSTANCE BusInstanceInformation;
+ BUS_DATA_TYPE AssociatedConfigurationSpace;
+ UNICODE_STRING DeviceInstancePath;
+ ULONG ServiceInstanceOrdinal;
+ BOOLEAN RootBus;
+ BOOLEAN Processed;
+ LIST_ENTRY BusInstanceListEntry;
+} PLUGPLAY_BUS_INSTANCE_FULL_DESCRIPTOR, *PPLUGPLAY_BUS_INSTANCE_FULL_DESCRIPTOR;
+
+//
+// Define PnP Manager bus type node that contains all necessary information about
+// a particular bus enumerator, including a list of all bus instances of that type.
+//
+
+typedef struct _PLUGPLAY_BUS_ENUMERATOR {
+ UNICODE_STRING ServiceName;
+ LIST_ENTRY BusInstanceListEntry;
+ LIST_ENTRY BusEnumeratorListEntry;
+ PUNICODE_STRING PlugPlayIDs;
+ ULONG PlugPlayIDCount;
+ UNICODE_STRING DriverName;
+} PLUGPLAY_BUS_ENUMERATOR, *PPLUGPLAY_BUS_ENUMERATOR;
+
+#endif // _PNP_POWER_
+
+// begin_ntddk begin_nthal begin_ntifs
+
+#if _PNP_POWER_STUB_ENABLED_
+
+#define MAX_CLASS_NAME_LEN 32 // defined by WIndows 95 in inc16\setupx.h
+
+//
+// Define Device Status for IoReportDeviceStatus
+// 0 - 0x7fffffff are for private use and 0x80000000 -
+// 0xffffffff are reserved for system.
+//
+
+#define DEVICE_STATUS_OK 0x80000000
+#define DEVICE_STATUS_MALFUNCTIONED 0x80000001
+#define DEVICE_STATUS_REMOVED 0x80000002
+#define DEVICE_STATUS_DISABLED 0x80000003
+
+//
+// Define PnP Device Property for IoGet/SetDeviceProperty
+//
+
+typedef enum {
+ DeviceDescription,
+ Configuration,
+ ConfigurationVector,
+ ClassGuid,
+ FriendlyName
+} DEVICE_REGISTRY_PROPERTY;
+
+//
+// Defines PnP notification event category
+//
+
+typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
+ EventCategoryHardwareProfileChange,
+ EventCategoryDeviceArrival,
+ EventCategoryDeviceRemoval
+} IO_NOTIFICATION_EVENT_CATEGORY;
+
+//
+// Defines PnP notification event ids
+//
+
+typedef enum _IO_NOTIFICATION_EVENT_ID {
+ QueryHardwareProfileChange,
+ HardwareProfileChanged,
+ HardwareProfileChangeCancelled,
+ DeviceArrival,
+ DeviceQueryRemove,
+ DeviceQueryRemoveFailed,
+ DeviceRemoveComplete
+} IO_NOTIFICATION_EVENT_ID;
+
+typedef
+NTSTATUS
+(*PDRIVER_NOTIFICATION_ENTRY) (
+ IN PVOID Context,
+ IN IO_NOTIFICATION_EVENT_ID EventId,
+ IN PVOID NotificationStructure
+ );
+
+//
+// The following definitions are used in IoQuerySystemInformation
+//
+
+#define OS_WINDOWS_NT 0x0001
+#define OS_WINDOWS_9X 0x0002
+
+typedef struct _IO_SYSTEM_INFORMATION {
+ USHORT Size;
+ USHORT OS;
+ USHORT OSVersion;
+ USHORT NumberProcessors;
+ USHORT ProcessorArchitecture;
+ USHORT ProcessorLevel;
+} IO_SYSTEM_INFORMATION, *PIO_SYSTEM_INFORMATION;
+
+#endif // _PNP_POWER_STUB_ENABLED_
+
+// end_ntddk end_nthal end_ntifs
+
+NTKERNELAPI
+BOOLEAN
+PpInitSystem (
+ VOID
+ );
+
+NTKERNELAPI
+NTSTATUS
+PpEnumerateBus(
+ IN PPLUGPLAY_BUS_INSTANCE BusInstance OPTIONAL,
+ IN PUNICODE_STRING BusDeviceInstanceName OPTIONAL
+ );
+
+NTKERNELAPI
+NTSTATUS
+PpDeviceRegistration(
+ IN PUNICODE_STRING DeviceInstancePath,
+ IN BOOLEAN Add
+ );
+
+#if _PNP_POWER_
+
+NTKERNELAPI
+NTSTATUS
+PpPerformFullEnumeration(
+ IN BOOLEAN DetectRootBuses
+ );
+
+#endif // _PNP_POWER_
+
+// begin_nthal
+
+#if _PNP_POWER_
+
+struct _HAL_BUS_INFORMATION;
+
+#endif
+
+// end_nthal
+
+// begin_ntddk begin_nthal begin_ntifs
+
+NTKERNELAPI
+NTSTATUS
+IoQueryDeviceEnumInfo(
+ IN PUNICODE_STRING ServiceKeyName,
+ OUT PULONG Count
+ );
+
+NTKERNELAPI
+NTSTATUS
+IoOpenDeviceInstanceKey(
+ IN PUNICODE_STRING ServiceKeyName,
+ IN ULONG InstanceNumber,
+ IN ULONG DevInstKeyType,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PHANDLE DevInstRegKey
+ );
+
+#if _PNP_POWER_STUB_ENABLED_
+
+NTSTATUS
+IoQuerySystemInformation(
+ IN OUT PIO_SYSTEM_INFORMATION SystemInformation
+ );
+
+NTKERNELAPI
+NTSTATUS
+IoRegisterPlugPlayNotification(
+ IN IO_NOTIFICATION_EVENT_CATEGORY Event,
+ IN LPGUID ResourceType OPTIONAL,
+ IN PVOID ResourceDescription OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PDRIVER_NOTIFICATION_ENTRY NotificationEntry,
+ IN PVOID Context
+ );
+
+NTKERNELAPI
+NTSTATUS
+IoUnregisterPlugPlayNotification(
+ IN IO_NOTIFICATION_EVENT_CATEGORY Event,
+ IN LPGUID ResourceType OPTIONAL,
+ IN PVOID ResourceDescription OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PDRIVER_NOTIFICATION_ENTRY NotificationEntry
+ );
+
+NTKERNELAPI
+NTSTATUS
+IoGetDeviceProperty(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
+ IN ULONG BufferLength,
+ IN PVOID PropertyBuffer,
+ OUT PULONG ResultLength
+ );
+
+NTKERNELAPI
+NTSTATUS
+IoSetDeviceProperty(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
+ IN PVOID PropertyBuffer,
+ IN ULONG BufferLength
+ );
+
+NTKERNELAPI
+NTSTATUS
+IoReportDeviceStatus(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG DeviceStatus
+ );
+
+#endif // _PNP_POWER_STUB_ENABLED_
+
+// end_ntddk end_nthal end_ntifs
+
+#endif // _PNP_
+
+