--- mstools/h/winioctl.h 2018/08/09 18:21:06 1.1 +++ mstools/h/winioctl.h 2018/08/09 18:23:01 1.1.1.2 @@ -1,4 +1,4 @@ -/*++ BUILD Version: 0011 // Increment this if a change has global effects +/*++ BUILD Version: 0012 // Increment this if a change has global effects Copyright (c) 1990-1992 Microsoft Corporation @@ -21,6 +21,7 @@ Revision History: #ifndef _DEVIOCTL_ #define _DEVIOCTL_ +// begin_ntddk begin_nthal // // Define the various device type values. Note that values used by Microsoft // Corporation are in the range 0-32767, and 32768-65535 are reserved for use @@ -68,6 +69,7 @@ Revision History: #define FILE_DEVICE_WAVE_IN 0x00000025 #define FILE_DEVICE_WAVE_OUT 0x00000026 #define FILE_DEVICE_8042_PORT 0x00000027 +#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 // // Macro definition for defining IOCTL and FSCTL function control codes. Note @@ -102,14 +104,13 @@ Revision History: #define FILE_READ_ACCESS ( 0x0001 ) // file & pipe #define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe +// end_ntddk end_nthal + #endif // _DEVIOCTL_ // -// IoControlCode values for this device. -// -// Warning: Remember that the low two bits of the code specify how the -// buffers are passed to the driver! +// IoControlCode values for disk devices. // #define IOCTL_DISK_BASE FILE_DEVICE_DISK @@ -122,33 +123,20 @@ Revision History: #define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_DISK_GET_DRIVE_LETTERS CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS) // // The following device control codes are common for all class drivers. The // functions codes defined here must match all of the other class drivers. // -#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0207, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) +#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS) -#define IOCTL_DISK_UNLOAD_DRIVER CTL_CODE(IOCTL_DISK_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) -#define IOCTL_DISK_DBG_GET_STATISTICS CTL_CODE(IOCTL_DISK_BASE, 0x1000, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_DISK_DBG_FIFO_TUNING CTL_CODE(IOCTL_DISK_BASE, 0x1001, METHOD_BUFFERED, FILE_ANY_ACCESS) -#define IOCTL_DISK_DBG_POWER_RECOVERY CTL_CODE(IOCTL_DISK_BASE, 0x1002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) - -// -// The following device control code is for the SIMBAD simulated bad -// sector facility. See SIMBAD.H in this directory for related structures. -// - -#define IOCTL_DISK_SIMBAD CTL_CODE(IOCTL_DISK_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) +#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) // // Define the partition types returnable by known disk drivers. @@ -257,8 +245,8 @@ typedef WORD *PBAD_TRACK_NUMBER; // typedef struct _DISK_GEOMETRY { - MEDIA_TYPE MediaType; LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; DWORD TracksPerCylinder; DWORD SectorsPerTrack; DWORD BytesPerSector; @@ -271,13 +259,13 @@ typedef struct _DISK_GEOMETRY { // typedef struct _PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + LARGE_INTEGER HiddenSectors; BYTE PartitionType; BOOLEAN BootIndicator; BOOLEAN RecognizedPartition; BOOLEAN RewritePartition; - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - LARGE_INTEGER HiddenSectors; } PARTITION_INFORMATION, *PPARTITION_INFORMATION; // @@ -337,6 +325,49 @@ typedef struct _DISK_PERFORMANCE { DWORD QueueDepth; } DISK_PERFORMANCE, *PDISK_PERFORMANCE; +// +// IOCTL_DISK_MEDIA_REMOVAL disables the mechanism +// on a SCSI device that ejects media. This function +// may or may not be supported on SCSI devices that +// support removable media. +// +// TRUE means prevent media from being removed. +// FALSE means allow media removal. +// + +typedef struct _PREVENT_MEDIA_REMOVAL { + BOOLEAN PreventMediaRemoval; +} PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL; + + +#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS) + + +// +// The following values follow the escape designator in the +// data stream if the LSRMST_INSERT mode has been turned on. +// +#define SERIAL_LSRMST_ESCAPE ((BYTE )0x00) + +// +// Following this value is the contents of the line status +// register, and then the character in the RX hardware when +// the line status register was encountered. +// +#define SERIAL_LSRMST_LSR_DATA ((BYTE )0x01) + +// +// Following this value is the contents of the line status +// register. No error character follows +// +#define SERIAL_LSRMST_LSR_NODATA ((BYTE )0x02) + +// +// Following this value is the contents of the modem status +// register. +// +#define SERIAL_LSRMST_MST ((BYTE )0x03) + #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)