[NTOSKRNL][NDK][UMPNPMGR] Define and use PLUGPLAY_CONTROL_PROPERTY_DATA.Properties...
[reactos.git] / sdk / include / ndk / cmtypes.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 cmtypes.h
8
9 Abstract:
10
11 Type definitions for the Configuration Manager.
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _CMTYPES_H
20 #define _CMTYPES_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <cfg.h>
27 #include <iotypes.h>
28
29 #define MAX_BUS_NAME 24
30
31 //
32 // PLUGPLAY_CONTROL_PROPERTY_DATA.Properties
33 //
34 #define PNP_PROPERTY_UI_NUMBER 0
35 #define PNP_PROPERTY_PHYSICAL_DEVICE_OBJECT_NAME 1
36 #define PNP_PROPERTY_BUSTYPEGUID 2
37 #define PNP_PROPERTY_LEGACYBUSTYPE 3
38 #define PNP_PROPERTY_BUSNUMBER 4
39 #define PNP_PROPERTY_POWER_DATA 5
40 #define PNP_PROPERTY_REMOVAL_POLICY 6
41 #define PNP_PROPERTY_REMOVAL_POLICY_OVERRIDE 7
42 #define PNP_PROPERTY_ADDRESS 8
43 #define PNP_PROPERTY_ENUMERATOR_NAME 9
44 #define PNP_PROPERTY_REMOVAL_POLICY_HARDWARE_DEFAULT 10
45 #define PNP_PROPERTY_INSTALL_STATE 11
46 #define PNP_PROPERTY_LOCATION_PATHS 12
47 #define PNP_PROPERTY_CONTAINERID 13
48
49 //
50 // PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relations
51 //
52 #define PNP_GET_PARENT_DEVICE 1
53 #define PNP_GET_CHILD_DEVICE 2
54 #define PNP_GET_SIBLING_DEVICE 3
55
56 //
57 // PLUGPLAY_CONTROL_STATUS_DATA.Operation
58 //
59 #define PNP_GET_DEVICE_STATUS 0
60 #define PNP_SET_DEVICE_STATUS 1
61 #define PNP_CLEAR_DEVICE_STATUS 2
62
63 //
64 // PLUGPLAY_CONTROL_DEVICE_RELATIONS_DATA.Relations
65 //
66 #define PNP_EJECT_RELATIONS 0
67 #define PNP_REMOVAL_RELATIONS 1
68 #define PNP_POWER_RELATIONS 2
69 #define PNP_BUS_RELATIONS 3
70
71
72 #ifdef NTOS_MODE_USER
73
74 //
75 // Resource Type
76 //
77 #define CmResourceTypeNull 0
78 #define CmResourceTypePort 1
79 #define CmResourceTypeInterrupt 2
80 #define CmResourceTypeMemory 3
81 #define CmResourceTypeDma 4
82 #define CmResourceTypeDeviceSpecific 5
83 #define CmResourceTypeBusNumber 6
84 #define CmResourceTypeMemoryLarge 7
85 #define CmResourceTypeNonArbitrated 128
86 #define CmResourceTypeConfigData 128
87 #define CmResourceTypeDevicePrivate 129
88 #define CmResourceTypePcCardConfig 130
89 #define CmResourceTypeMfCardConfig 131
90
91
92 //
93 // Resource Descriptor Share Dispositions
94 //
95 typedef enum _CM_SHARE_DISPOSITION
96 {
97 CmResourceShareUndetermined,
98 CmResourceShareDeviceExclusive,
99 CmResourceShareDriverExclusive,
100 CmResourceShareShared
101 } CM_SHARE_DISPOSITION;
102
103 #endif
104
105 //
106 // Port Resource Descriptor Flags
107 //
108 #define CM_RESOURCE_PORT_MEMORY 0x0000
109 #define CM_RESOURCE_PORT_IO 0x0001
110 #define CM_RESOURCE_PORT_10_BIT_DECODE 0x0004
111 #define CM_RESOURCE_PORT_12_BIT_DECODE 0x0008
112 #define CM_RESOURCE_PORT_16_BIT_DECODE 0x0010
113 #define CM_RESOURCE_PORT_POSITIVE_DECODE 0x0020
114 #define CM_RESOURCE_PORT_PASSIVE_DECODE 0x0040
115 #define CM_RESOURCE_PORT_WINDOW_DECODE 0x0080
116
117 //
118 // Memory Resource Descriptor Flags
119 //
120 #define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
121 #define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
122 #define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
123 #define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
124 #define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
125 #define CM_RESOURCE_MEMORY_24 0x0010
126 #define CM_RESOURCE_MEMORY_CACHEABLE 0x0020
127
128 //
129 // DMA Resource Descriptor Flags
130 //
131 #define CM_RESOURCE_DMA_8 0x0000
132 #define CM_RESOURCE_DMA_16 0x0001
133 #define CM_RESOURCE_DMA_32 0x0002
134 #define CM_RESOURCE_DMA_8_AND_16 0x0004
135 #define CM_RESOURCE_DMA_BUS_MASTER 0x0008
136 #define CM_RESOURCE_DMA_TYPE_A 0x0010
137 #define CM_RESOURCE_DMA_TYPE_B 0x0020
138 #define CM_RESOURCE_DMA_TYPE_F 0x0040
139
140 //
141 // Interrupt Resource Descriptor Flags
142 //
143 #define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0x0000
144 #define CM_RESOURCE_INTERRUPT_LATCHED 0x0001
145 #define CM_RESOURCE_INTERRUPT_MESSAGE 0x0002
146 #define CM_RESOURCE_INTERRUPT_POLICY_INCLUDED 0x0004
147
148 //
149 // NtInitializeRegistry Flags
150 //
151 #define CM_BOOT_FLAG_SMSS 0x0000
152 #define CM_BOOT_FLAG_SETUP 0x0001
153 #define CM_BOOT_FLAG_ACCEPTED 0x0002
154 #define CM_BOOT_FLAG_MAX (CM_BOOT_FLAG_ACCEPTED + 999)
155
156 #ifdef NTOS_MODE_USER
157
158 //
159 // Information Classes for NtQueryKey
160 //
161 typedef enum _KEY_INFORMATION_CLASS
162 {
163 KeyBasicInformation,
164 KeyNodeInformation,
165 KeyFullInformation,
166 KeyNameInformation,
167 KeyCachedInformation,
168 KeyFlagsInformation,
169 KeyVirtualizationInformation,
170 KeyHandleTagsInformation,
171 MaxKeyInfoClass
172 } KEY_INFORMATION_CLASS;
173
174 typedef enum _KEY_VALUE_INFORMATION_CLASS
175 {
176 KeyValueBasicInformation,
177 KeyValueFullInformation,
178 KeyValuePartialInformation,
179 KeyValueFullInformationAlign64,
180 KeyValuePartialInformationAlign64,
181 MaxKeyValueInfoClass
182 } KEY_VALUE_INFORMATION_CLASS;
183
184 typedef enum _KEY_SET_INFORMATION_CLASS {
185 KeyWriteTimeInformation,
186 KeyWow64FlagsInformation,
187 KeyControlFlagsInformation,
188 KeySetVirtualizationInformation,
189 KeySetDebugInformation,
190 KeySetHandleTagsInformation,
191 MaxKeySetInfoClass
192 } KEY_SET_INFORMATION_CLASS;
193
194 #endif
195
196 //
197 // Plag and Play Classes
198 //
199 typedef enum _PLUGPLAY_CONTROL_CLASS
200 {
201 PlugPlayControlEnumerateDevice,
202 PlugPlayControlRegisterNewDevice,
203 PlugPlayControlDeregisterDevice,
204 PlugPlayControlInitializeDevice,
205 PlugPlayControlStartDevice,
206 PlugPlayControlUnlockDevice,
207 PlugPlayControlQueryAndRemoveDevice,
208 PlugPlayControlUserResponse,
209 PlugPlayControlGenerateLegacyDevice,
210 PlugPlayControlGetInterfaceDeviceList,
211 PlugPlayControlProperty,
212 PlugPlayControlDeviceClassAssociation,
213 PlugPlayControlGetRelatedDevice,
214 PlugPlayControlGetInterfaceDeviceAlias,
215 PlugPlayControlDeviceStatus,
216 PlugPlayControlGetDeviceDepth,
217 PlugPlayControlQueryDeviceRelations,
218 PlugPlayControlTargetDeviceRelation,
219 PlugPlayControlQueryConflictList,
220 PlugPlayControlRetrieveDock,
221 PlugPlayControlResetDevice,
222 PlugPlayControlHaltDevice,
223 PlugPlayControlGetBlockedDriverList,
224 MaxPlugPlayControl
225 } PLUGPLAY_CONTROL_CLASS;
226
227 typedef enum _PLUGPLAY_BUS_CLASS
228 {
229 SystemBus,
230 PlugPlayVirtualBus,
231 MaxPlugPlayBusClass
232 } PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;
233
234 //
235 // Plag and Play Bus Types
236 //
237 typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE
238 {
239 Root,
240 MaxPlugPlayVirtualBusType
241 } PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;
242
243 //
244 // Plag and Play Event Categories
245 //
246 typedef enum _PLUGPLAY_EVENT_CATEGORY
247 {
248 HardwareProfileChangeEvent,
249 TargetDeviceChangeEvent,
250 DeviceClassChangeEvent,
251 CustomDeviceEvent,
252 DeviceInstallEvent,
253 DeviceArrivalEvent,
254 PowerEvent,
255 VetoEvent,
256 BlockedDriverEvent,
257 MaxPlugEventCategory
258 } PLUGPLAY_EVENT_CATEGORY;
259
260 #ifdef NTOS_MODE_USER
261
262 //
263 // Information Structures for NtQueryKeyInformation
264 //
265 typedef struct _KEY_WRITE_TIME_INFORMATION
266 {
267 LARGE_INTEGER LastWriteTime;
268 } KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
269
270 typedef struct _KEY_WOW64_FLAGS_INFORMATION
271 {
272 ULONG UserFlags;
273 } KEY_WOW64_FLAGS_INFORMATION, *PKEY_WOW64_FLAGS_INFORMATION;
274
275 typedef struct _KEY_USER_FLAGS_INFORMATION
276 {
277 ULONG UserFlags;
278 } KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;
279
280 typedef struct _KEY_HANDLE_TAGS_INFORMATION
281 {
282 ULONG HandleTags;
283 } KEY_HANDLE_TAGS_INFORMATION, *PKEY_HANDLE_TAGS_INFORMATION;
284
285 typedef struct _KEY_CONTROL_FLAGS_INFORMATION
286 {
287 ULONG ControlFlags;
288 } KEY_CONTROL_FLAGS_INFORMATION, *PKEY_CONTROL_FLAGS_INFORMATION;
289
290 typedef struct _KEY_VIRTUALIZATION_INFORMATION
291 {
292 ULONG VirtualizationCandidate:1;
293 ULONG VirtualizationEnabled:1;
294 ULONG VirtualTarget:1;
295 ULONG VirtualStore:1;
296 ULONG VirtualSource:1;
297 ULONG Reserved:27;
298 } KEY_VIRTUALIZATION_INFORMATION, *PKEY_VIRTUALIZATION_INFORMATION;
299
300 typedef struct _KEY_SET_VIRTUALIZATION_INFORMATION
301 {
302 ULONG VirtualTarget:1;
303 ULONG VirtualStore:1;
304 ULONG VirtualSource:1;
305 ULONG Reserved:29;
306 } KEY_SET_VIRTUALIZATION_INFORMATION, *PKEY_SET_VIRTUALIZATION_INFORMATION;
307
308
309 typedef struct _KEY_FULL_INFORMATION
310 {
311 LARGE_INTEGER LastWriteTime;
312 ULONG TitleIndex;
313 ULONG ClassOffset;
314 ULONG ClassLength;
315 ULONG SubKeys;
316 ULONG MaxNameLen;
317 ULONG MaxClassLen;
318 ULONG Values;
319 ULONG MaxValueNameLen;
320 ULONG MaxValueDataLen;
321 WCHAR Class[1];
322 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
323
324 typedef struct _KEY_NAME_INFORMATION
325 {
326 ULONG NameLength;
327 WCHAR Name[1];
328 } KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
329
330
331 typedef struct _KEY_NODE_INFORMATION
332 {
333 LARGE_INTEGER LastWriteTime;
334 ULONG TitleIndex;
335 ULONG ClassOffset;
336 ULONG ClassLength;
337 ULONG NameLength;
338 WCHAR Name[1];
339 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
340
341 typedef struct _KEY_VALUE_ENTRY
342 {
343 PUNICODE_STRING ValueName;
344 ULONG DataLength;
345 ULONG DataOffset;
346 ULONG Type;
347 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
348
349 typedef struct _KEY_VALUE_PARTIAL_INFORMATION
350 {
351 ULONG TitleIndex;
352 ULONG Type;
353 ULONG DataLength;
354 UCHAR Data[1];
355 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
356
357 typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64
358 {
359 ULONG Type;
360 ULONG DataLength;
361 UCHAR Data[1];
362 } KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64;
363
364 typedef struct _KEY_VALUE_BASIC_INFORMATION
365 {
366 ULONG TitleIndex;
367 ULONG Type;
368 ULONG NameLength;
369 WCHAR Name[1];
370 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
371
372 typedef struct _KEY_VALUE_FULL_INFORMATION
373 {
374 ULONG TitleIndex;
375 ULONG Type;
376 ULONG DataOffset;
377 ULONG DataLength;
378 ULONG NameLength;
379 WCHAR Name[1];
380 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
381
382 typedef struct _KEY_BASIC_INFORMATION
383 {
384 LARGE_INTEGER LastWriteTime;
385 ULONG TitleIndex;
386 ULONG NameLength;
387 WCHAR Name[1];
388 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
389
390 #endif
391
392 //
393 // Plug and Play Event Block
394 //
395 typedef struct _PLUGPLAY_EVENT_BLOCK
396 {
397 GUID EventGuid;
398 PLUGPLAY_EVENT_CATEGORY EventCategory;
399 PULONG Result;
400 ULONG Flags;
401 ULONG TotalSize;
402 PVOID DeviceObject;
403 union
404 {
405 struct
406 {
407 GUID ClassGuid;
408 WCHAR SymbolicLinkName[ANYSIZE_ARRAY];
409 } DeviceClass;
410 struct
411 {
412 WCHAR DeviceIds[ANYSIZE_ARRAY];
413 } TargetDevice;
414 struct
415 {
416 WCHAR DeviceId[ANYSIZE_ARRAY];
417 } InstallDevice;
418 struct
419 {
420 PVOID NotificationStructure;
421 WCHAR DeviceIds[ANYSIZE_ARRAY];
422 } CustomNotification;
423 struct
424 {
425 PVOID Notification;
426 } ProfileNotification;
427 struct
428 {
429 ULONG NotificationCode;
430 ULONG NotificationData;
431 } PowerNotification;
432 struct
433 {
434 PNP_VETO_TYPE VetoType;
435 WCHAR DeviceIdVetoNameBuffer[ANYSIZE_ARRAY];
436 } VetoNotification;
437 struct
438 {
439 GUID BlockedDriverGuid;
440 } BlockedDriverNotification;
441 };
442 } PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK;
443
444 //
445 // Plug and Play Control Classes
446 //
447
448 //Class 0x09
449 typedef struct _PLUGPLAY_CONTROL_INTERFACE_DEVICE_LIST_DATA
450 {
451 UNICODE_STRING DeviceInstance;
452 LPGUID FilterGuid;
453 ULONG Flags;
454 PVOID Buffer;
455 ULONG BufferSize;
456 } PLUGPLAY_CONTROL_INTERFACE_DEVICE_LIST_DATA, *PPLUGPLAY_CONTROL_INTERFACE_DEVICE_LIST_DATA;
457
458 //Class 0x0A
459 typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA
460 {
461 UNICODE_STRING DeviceInstance;
462 ULONG Property;
463 PVOID Buffer;
464 ULONG BufferSize;
465 } PLUGPLAY_CONTROL_PROPERTY_DATA, *PPLUGPLAY_CONTROL_PROPERTY_DATA;
466
467 // Class 0x0C
468 typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA
469 {
470 UNICODE_STRING TargetDeviceInstance;
471 ULONG Relation;
472 PWCHAR RelatedDeviceInstance;
473 ULONG RelatedDeviceInstanceLength;
474 } PLUGPLAY_CONTROL_RELATED_DEVICE_DATA, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA;
475
476 // Class 0x0E
477 typedef struct _PLUGPLAY_CONTOL_STATUS_DATA
478 {
479 UNICODE_STRING DeviceInstance;
480 ULONG Operation;
481 ULONG DeviceStatus;
482 ULONG DeviceProblem;
483 } PLUGPLAY_CONTROL_STATUS_DATA, *PPLUGPLAY_CONTROL_STATUS_DATA;
484
485 // Class 0x0F
486 typedef struct _PLUGPLAY_CONTROL_DEPTH_DATA
487 {
488 UNICODE_STRING DeviceInstance;
489 ULONG Depth;
490 } PLUGPLAY_CONTROL_DEPTH_DATA, *PPLUGPLAY_CONTROL_DEPTH_DATA;
491
492 // Class 0x10
493 typedef struct _PLUGPLAY_CONTROL_DEVICE_RELATIONS_DATA
494 {
495 UNICODE_STRING DeviceInstance;
496 ULONG Relations;
497 ULONG BufferSize;
498 PWCHAR Buffer;
499 } PLUGPLAY_CONTROL_DEVICE_RELATIONS_DATA, *PPLUGPLAY_CONTROL_DEVICE_RELATIONS_DATA;
500
501 // Class 0x13
502 typedef struct _PLUGPLAY_CONTROL_RETRIEVE_DOCK_DATA
503 {
504 ULONG DeviceInstanceLength;
505 PWSTR DeviceInstance;
506 } PLUGPLAY_CONTROL_RETRIEVE_DOCK_DATA, *PPLUGPLAY_CONTROL_RETRIEVE_DOCK_DATA;
507
508 // Class 0x14
509 typedef struct _PLUGPLAY_CONTROL_RESET_DEVICE_DATA
510 {
511 UNICODE_STRING DeviceInstance;
512 } PLUGPLAY_CONTROL_RESET_DEVICE_DATA, *PPLUGPLAY_CONTROL_RESET_DEVICE_DATA;
513
514 //
515 // Plug and Play Bus Type Definition
516 //
517 typedef struct _PLUGPLAY_BUS_TYPE
518 {
519 PLUGPLAY_BUS_CLASS BusClass;
520 union
521 {
522 INTERFACE_TYPE SystemBusType;
523 PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType;
524 };
525 } PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE;
526
527 //
528 // Plug and Play Bus Instance Definition
529 //
530 typedef struct _PLUGPLAY_BUS_INSTANCE
531 {
532 PLUGPLAY_BUS_TYPE BusType;
533 ULONG BusNumber;
534 WCHAR BusName[MAX_BUS_NAME];
535 } PLUGPLAY_BUS_INSTANCE, *PPLUGPLAY_BUS_INSTANCE;
536
537 #ifdef NTOS_MODE_USER
538
539 //
540 // Partial Resource Descriptor and List for Hardware
541 //
542 #include <pshpack1.h>
543 typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
544 {
545 UCHAR Type;
546 UCHAR ShareDisposition;
547 USHORT Flags;
548 union
549 {
550 struct
551 {
552 PHYSICAL_ADDRESS Start;
553 ULONG Length;
554 } Generic;
555 struct
556 {
557 PHYSICAL_ADDRESS Start;
558 ULONG Length;
559 } Port;
560 struct
561 {
562 ULONG Level;
563 ULONG Vector;
564 KAFFINITY Affinity;
565 } Interrupt;
566 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
567 struct
568 {
569 union
570 {
571 struct
572 {
573 USHORT Reserved;
574 USHORT MessageCount;
575 ULONG Vector;
576 KAFFINITY Affinity;
577 } Raw;
578 struct
579 {
580 ULONG Level;
581 ULONG Vector;
582 KAFFINITY Affinity;
583 } Translated;
584 };
585 } MessageInterrupt;
586 #endif
587 struct
588 {
589 PHYSICAL_ADDRESS Start;
590 ULONG Length;
591 } Memory;
592 struct
593 {
594 ULONG Channel;
595 ULONG Port;
596 ULONG Reserved1;
597 } Dma;
598 struct
599 {
600 ULONG Data[3];
601 } DevicePrivate;
602 struct
603 {
604 ULONG Start;
605 ULONG Length;
606 ULONG Reserved;
607 } BusNumber;
608 struct
609 {
610 ULONG DataSize;
611 ULONG Reserved1;
612 ULONG Reserved2;
613 } DeviceSpecificData;
614 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
615 struct
616 {
617 PHYSICAL_ADDRESS Start;
618 ULONG Length40;
619 } Memory40;
620 struct
621 {
622 PHYSICAL_ADDRESS Start;
623 ULONG Length48;
624 } Memory48;
625 struct
626 {
627 PHYSICAL_ADDRESS Start;
628 ULONG Length64;
629 } Memory64;
630 #endif
631 } u;
632 } CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
633
634 typedef struct _CM_PARTIAL_RESOURCE_LIST
635 {
636 USHORT Version;
637 USHORT Revision;
638 ULONG Count;
639 CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
640 } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
641
642 //
643 // Full Resource Descriptor and List for Hardware
644 //
645 typedef struct _CM_FULL_RESOURCE_DESCRIPTOR
646 {
647 INTERFACE_TYPE InterfaceType;
648 ULONG BusNumber;
649 CM_PARTIAL_RESOURCE_LIST PartialResourceList;
650 } CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
651
652 typedef struct _CM_RESOURCE_LIST
653 {
654 ULONG Count;
655 CM_FULL_RESOURCE_DESCRIPTOR List[1];
656 } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
657
658 //
659 // ROM Block Structure
660 //
661 typedef struct _CM_ROM_BLOCK
662 {
663 ULONG Address;
664 ULONG Size;
665 } CM_ROM_BLOCK, *PCM_ROM_BLOCK;
666
667 //
668 // Disk/INT13 Structures
669 //
670 typedef struct _CM_INT13_DRIVE_PARAMETER
671 {
672 USHORT DriveSelect;
673 ULONG MaxCylinders;
674 USHORT SectorsPerTrack;
675 USHORT MaxHeads;
676 USHORT NumberDrives;
677 } CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
678
679 typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
680 {
681 ULONG BytesPerSector;
682 ULONG NumberOfCylinders;
683 ULONG SectorsPerTrack;
684 ULONG NumberOfHeads;
685 } CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
686
687 #include <poppack.h>
688
689 #endif // _!NTOS_MODE_USER
690
691 #endif // _CMTYPES_H
692
693
694