/*++ Copyright (c) 1997 Microsoft Corporation Module Name: volmgr.h Abstract: This file defines the services supplied by the volume managers. Author: norbertk Revision History: --*/ #ifndef _VOLMGR_ #define _VOLMGR_ #include #define IOCTL_INTERNAL_VOLMGR_PARTITION_ARRIVED CTL_CODE(VOLMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_PARTITION_REMOVED CTL_CODE(VOLMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_WHOLE_DISK_REMOVED CTL_CODE(VOLMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_REFERENCE_DEPENDANT_VOLUMES CTL_CODE(VOLMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_LEGACY_PARTITION_ARRIVED CTL_CODE(VOLMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_LEGACY_PARTITION_REMOVED CTL_CODE(VOLMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_QUERY_CHANGE_PARTITION CTL_CODE(VOLMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_CANCEL_CHANGE_PARTITION CTL_CODE(VOLMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_PARTITION_CHANGED CTL_CODE(VOLMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_PMWMICOUNTERLIB_CONTEXT CTL_CODE(VOLMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_INTERNAL_VOLMGR_SET_POWER_STATE CTL_CODE(VOLMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) // // Input structure for IOCTL_INTERNAL_VOLMGR_PARTITION_ARRIVED, // IOCTL_INTERNAL_VOLMGR_PARTITION_REMOVED, // IOCTL_INTERNAL_VOLMGR_REFERENCE_DEPENDANT_VOLUMES, // IOCTL_INTERNAL_VOLMGR_QUERY_CHANGE_PARTITION, // IOCTL_INTERNAL_VOLMGR_CANCEL_CHANGE_PARTITION, and // IOCTL_INTERNAL_VOLMGR_PARTITION_CHANGED. // typedef struct _VOLMGR_PARTITION_INFORMATION { PDEVICE_OBJECT PartitionDeviceObject; PDEVICE_OBJECT WholeDiskPdo; } VOLMGR_PARTITION_INFORMATION, *PVOLMGR_PARTITION_INFORMATION; // // Input structure for IOCTL_INTERNAL_VOLMGR_WHOLE_DISK_REMOVED. // typedef struct _VOLMGR_WHOLE_DISK_INFORMATION { PDEVICE_OBJECT WholeDiskPdo; } VOLMGR_WHOLE_DISK_INFORMATION, *PVOLMGR_WHOLE_DISK_INFORMATION; // // Output structure for IOCTL_INTERNAL_VOLMGR_REFERENCE_DEPENDANT_VOLUMES. // typedef struct _VOLMGR_DEPENDANT_VOLUMES_INFORMATION { PDEVICE_RELATIONS DependantVolumeReferences; } VOLMGR_DEPENDANT_VOLUMES_INFORMATION, *PVOLMGR_DEPENDANT_VOLUMES_INFORMATION; // // Input structure for IOCTL_INTERNAL_VOLMGR_LEGACY_PARTITION_ARRIVED and // IOCTL_INTERNAL_VOLMGR_LEGACY_PARTITION_REMOVED. // typedef struct _VOLMGR_LEGACY_PARTITION_INFORMATION { PDEVICE_OBJECT LegacyWholeDiskDeviceObject; ULONG DiskNumber; ULONG PartitionNumber; } VOLMGR_LEGACY_PARTITION_INFORMATION, *PVOLMGR_LEGACY_PARTITION_INFORMATION; // // Input structure for IOCTL_INTERNAL_VOLMGR_PMWMICOUNTERLIB_CONTEXT // typedef NTSTATUS (*PPMWMICOUNTERENABLE) ( IN OUT PVOID* CounterContext ); typedef BOOLEAN (*PPMWMICOUNTERDISABLE) ( IN PVOID* CounterContext, IN BOOLEAN ForceDisable, IN BOOLEAN DeallocateOnZero ); typedef VOID (*PPMWMICOUNTERIOSTART) ( IN PVOID CounterContext, OUT PLARGE_INTEGER TimeStamp ); typedef VOID (*PPMWMICOUNTERIOCOMPLETE) ( IN PVOID CounterContext, IN PIRP Irp, IN PLARGE_INTEGER TimeStamp ); typedef VOID (*PPMWMICOUNTERQUERY) ( IN PVOID CounterContext, IN OUT PDISK_PERFORMANCE CounterBuffer, IN PWCHAR StorageManagerName, IN ULONG StorageDeviceNumber ); typedef struct _PMWMICOUNTERLIB_CONTEXT { PPMWMICOUNTERENABLE PmWmiCounterEnable; PPMWMICOUNTERDISABLE PmWmiCounterDisable; PPMWMICOUNTERIOSTART PmWmiCounterIoStart; PPMWMICOUNTERIOCOMPLETE PmWmiCounterIoComplete; PPMWMICOUNTERQUERY PmWmiCounterQuery; } PMWMICOUNTERLIB_CONTEXT, *PPMWMICOUNTERLIB_CONTEXT; // // Input structure for IOCTL_INTERNAL_VOLMGR_SET_POWER_STATE // typedef struct _VOLMGR_POWER_STATE { PDEVICE_OBJECT PartitionDeviceObject; PDEVICE_OBJECT WholeDiskPdo; DEVICE_POWER_STATE PowerState; } VOLMGR_POWER_STATE, *PVOLMGR_POWER_STATE; #endif