windows-nt/Source/XPSP1/NT/drivers/inc/volmgr.h
2020-09-26 16:20:57 +08:00

140 lines
4.3 KiB
C

/*++
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 <volmgrx.h>
#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