|
|
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
ntddft2.h
Abstract:
This header file defines new IOCTLs for the FTDISK driver to support the new FT API.
Author:
Norbert Kusters 13-July-1996
Notes:
Revision History:
--*/
#ifndef _NTDDFT2_
#define _NTDDFT2_
#if _MSC_VER > 1000
#pragma once
#endif
#include <fttypes.h>
#ifdef __cplusplus
extern "C" { #endif
//
// The name of the control device for the FT disk driver.
//
#define DD_FT_CONTROL_DEVICE_NAME L"\\Device\\FtControl"
#define DD_DOS_FT_CONTROL_NAME L"\\\\.\\FtControl"
//
// Control codes handled by the 'FtControl' device.
//
#define FTCONTROLTYPE ((ULONG) 'g')
#define FT_CREATE_LOGICAL_DISK CTL_CODE(FTCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FT_BREAK_LOGICAL_DISK CTL_CODE(FTCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FT_ENUMERATE_LOGICAL_DISKS CTL_CODE(FTCONTROLTYPE, 2, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_QUERY_LOGICAL_DISK_INFORMATION CTL_CODE(FTCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_ORPHAN_LOGICAL_DISK_MEMBER CTL_CODE(FTCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FT_REPLACE_LOGICAL_DISK_MEMBER CTL_CODE(FTCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK CTL_CODE(FTCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_INITIALIZE_LOGICAL_DISK CTL_CODE(FTCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK CTL_CODE(FTCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_CHECK_IO CTL_CODE(FTCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_SET_DRIVE_LETTER_FOR_LOGICAL_DISK CTL_CODE(FTCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FT_QUERY_NT_DEVICE_NAME_FOR_PARTITION CTL_CODE(FTCONTROLTYPE, 12, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_CHANGE_NOTIFY CTL_CODE(FTCONTROLTYPE, 13, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_STOP_SYNC_OPERATIONS CTL_CODE(FTCONTROLTYPE, 14, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
//
// Control codes handles by FT logical disks.
//
#define FT_QUERY_LOGICAL_DISK_ID CTL_CODE(FTCONTROLTYPE, 100, METHOD_BUFFERED, FILE_READ_ACCESS)
#define FT_CREATE_PARTITION_LOGICAL_DISK CTL_CODE(FTCONTROLTYPE, 101, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
//
// Input parameter for FT_CREATE_LOGICAL_DISK.
//
typedef struct _FT_CREATE_LOGICAL_DISK_INPUT { FT_LOGICAL_DISK_TYPE LogicalDiskType; USHORT NumberOfMembers; USHORT ConfigurationInformationSize; FT_LOGICAL_DISK_ID MemberArray[1]; } FT_CREATE_LOGICAL_DISK_INPUT, *PFT_CREATE_LOGICAL_DISK_INPUT;
//
// Output parameter for FT_CREATE_LOGICAL_DISK.
//
typedef struct _FT_CREATE_LOGICAL_DISK_OUTPUT { FT_LOGICAL_DISK_ID NewLogicalDiskId; } FT_CREATE_LOGICAL_DISK_OUTPUT, *PFT_CREATE_LOGICAL_DISK_OUTPUT;
//
// Input parameter for FT_BREAK_LOGICAL_DISK.
//
typedef struct _FT_BREAK_LOGICAL_DISK_INPUT { FT_LOGICAL_DISK_ID RootLogicalDiskId; } FT_BREAK_LOGICAL_DISK_INPUT, *PFT_BREAK_LOGICAL_DISK_INPUT;
//
// Output parameter for FT_ENUMERATE_LOGICAL_DISKS.
//
typedef struct _FT_ENUMERATE_LOGICAL_DISKS_OUTPUT { ULONG NumberOfRootLogicalDisks; ULONG Reserved; FT_LOGICAL_DISK_ID RootLogicalDiskIds[1]; } FT_ENUMERATE_LOGICAL_DISKS_OUTPUT, *PFT_ENUMERATE_LOGICAL_DISKS_OUTPUT;
//
// Input parameter for FT_QUERY_LOGICAL_DISK_INFORMATION.
//
typedef struct _FT_QUERY_LOGICAL_DISK_INFORMATION_INPUT { FT_LOGICAL_DISK_ID LogicalDiskId; } FT_QUERY_LOGICAL_DISK_INFORMATION_INPUT, *PFT_QUERY_LOGICAL_DISK_INFORMATION_INPUT;
//
// Output parameter for FT_QUERY_LOGICAL_DISK_INFORMATION.
//
typedef struct _FT_QUERY_LOGICAL_DISK_INFORMATION_OUTPUT { FT_LOGICAL_DISK_TYPE LogicalDiskType; LONGLONG VolumeSize; USHORT NumberOfMembers; USHORT ConfigurationInformationSize; USHORT StateInformationSize; USHORT Reserved; FT_LOGICAL_DISK_ID MemberArray[1]; } FT_QUERY_LOGICAL_DISK_INFORMATION_OUTPUT, *PFT_QUERY_LOGICAL_DISK_INFORMATION_OUTPUT;
//
// Input parameter for FT_ORPHAN_LOGICAL_DISK_MEMBER.
//
typedef struct _FT_ORPHAN_LOGICAL_DISK_MEMBER_INPUT { FT_LOGICAL_DISK_ID LogicalDiskId; USHORT MemberNumberToOrphan; USHORT Reserved[3]; } FT_ORPHAN_LOGICAL_DISK_MEMBER_INPUT, *PFT_ORPHAN_LOGICAL_DISK_MEMBER_INPUT;
//
// Input parameter for FT_REPLACE_LOGICAL_DISK_MEMBER.
//
typedef struct _FT_REPLACE_LOGICAL_DISK_MEMBER_INPUT { FT_LOGICAL_DISK_ID LogicalDiskId; USHORT MemberNumberToReplace; USHORT Reserved[3]; FT_LOGICAL_DISK_ID NewMemberLogicalDiskId; } FT_REPLACE_LOGICAL_DISK_MEMBER_INPUT, *PFT_REPLACE_LOGICAL_DISK_MEMBER_INPUT;
//
// Output parameter for FT_REPLACE_LOGICAL_DISK_MEMBER.
//
typedef struct _FT_REPLACE_LOGICAL_DISK_MEMBER_OUTPUT { FT_LOGICAL_DISK_ID NewLogicalDiskId; } FT_REPLACE_LOGICAL_DISK_MEMBER_OUTPUT, *PFT_REPLACE_LOGICAL_DISK_MEMBER_OUTPUT;
//
// Input parameter for FT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK.
//
typedef struct _FT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK_INPUT { FT_LOGICAL_DISK_ID RootLogicalDiskId; } FT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK_INPUT, *PFT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK_INPUT;
//
// Output parameter for FT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK.
//
typedef struct _FT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK_OUTPUT { USHORT NumberOfCharactersInNtDeviceName; WCHAR NtDeviceName[1]; } FT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK_OUTPUT, *PFT_QUERY_NT_DEVICE_NAME_FOR_LOGICAL_DISK_OUTPUT;
//
// Input parameter for FT_INITIALIZE_LOGICAL_DISK.
//
typedef struct _FT_INITIALIZE_LOGICAL_DISK_INPUT { FT_LOGICAL_DISK_ID RootLogicalDiskId; BOOLEAN RegenerateOrphans; } FT_INITIALIZE_LOGICAL_DISK_INPUT, *PFT_INITIALIZE_LOGICAL_DISK_INPUT;
//
// Input parameter for FT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK.
//
typedef struct _FT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK_INPUT { FT_LOGICAL_DISK_ID RootLogicalDiskId; } FT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK_INPUT, *PFT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK_INPUT;
//
// Output parameter for FT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK.
//
typedef struct _FT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK_OUTPUT { UCHAR DriveLetter; } FT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK_OUTPUT, *PFT_QUERY_DRIVE_LETTER_FOR_LOGICAL_DISK_OUTPUT;
//
// Input parameter for FT_CHECK_IO.
//
typedef struct _FT_CHECK_IO_INPUT { FT_LOGICAL_DISK_ID LogicalDiskId; } FT_CHECK_IO_INPUT, *PFT_CHECK_IO_INPUT;
//
// Output parameter for FT_CHECK_IO.
//
typedef struct _FT_CHECK_IO_OUTPUT { BOOLEAN IsIoOk; } FT_CHECK_IO_OUTPUT, *PFT_CHECK_IO_OUTPUT;
//
// Input parameter for FT_SET_DRIVE_LETTER_FOR_LOGICAL_DISK.
//
typedef struct _FT_SET_DRIVE_LETTER_FOR_LOGICAL_DISK_INPUT { FT_LOGICAL_DISK_ID RootLogicalDiskId; UCHAR DriveLetter; } FT_SET_DRIVE_LETTER_FOR_LOGICAL_DISK_INPUT, *PFT_SET_DRIVE_LETTER_FOR_LOGICAL_DISK_INPUT;
//
// Input parameter for FT_QUERY_NT_DEVICE_NAME_FOR_PARTITION.
//
typedef struct _FT_QUERY_NT_DEVICE_NAME_FOR_PARTITION_INPUT { ULONG Signature; ULONG Reserved; LONGLONG Offset; } FT_QUERY_NT_DEVICE_NAME_FOR_PARTITION_INPUT, *PFT_QUERY_NT_DEVICE_NAME_FOR_PARTITION_INPUT;
//
// Output parameter for FT_QUERY_NT_DEVICE_NAME_FOR_PARTITION.
//
typedef struct _FT_QUERY_NT_DEVICE_NAME_FOR_PARTITION_OUTPUT { USHORT NumberOfCharactersInNtDeviceName; WCHAR NtDeviceName[1]; } FT_QUERY_NT_DEVICE_NAME_FOR_PARTITION_OUTPUT, *PFT_QUERY_NT_DEVICE_NAME_FOR_PARTITION_OUTPUT;
//
// Input parameter for FT_STOP_SYNC_OPERATIONS.
//
typedef struct _FT_STOP_SYNC_OPERATIONS_INPUT { FT_LOGICAL_DISK_ID RootLogicalDiskId; } FT_STOP_SYNC_OPERATIONS_INPUT, *PFT_STOP_SYNC_OPERATIONS_INPUT;
//
// Output parameter for FT_QUERY_LOGICAL_DISK_ID.
//
typedef struct _FT_QUERY_LOGICAL_DISK_ID_OUTPUT { FT_LOGICAL_DISK_ID RootLogicalDiskId; } FT_QUERY_LOGICAL_DISK_ID_OUTPUT, *PFT_QUERY_LOGICAL_DISK_ID_OUTPUT;
//
// Output parameter for FT_CREATE_PARTITION_LOGICAL_DISK.
//
typedef struct _FT_CREATE_PARTITION_LOGICAL_DISK_OUTPUT { FT_LOGICAL_DISK_ID NewLogicalDiskId; } FT_CREATE_PARTITION_LOGICAL_DISK_OUTPUT, *PFT_CREATE_PARTITION_LOGICAL_DISK_OUTPUT;
#ifdef __cplusplus
} #endif
#endif // _NTDDFT2_
|