📄 test.h
字号:
typedef struct _DCB_disk { /* */
DCB DCB_filler_1; /* standard dcb header */
USHORT DCB_write_precomp; /* Write Precompensation */
ULONG DCB_disk_tsd_private; /* private area for tsd. used to */
/* store b: BDS ptr for single flp */
} DCB_disk, *pDCB_disk;
//
// To support Japanese 3mode floppy driver this is defined to add an extra
// field to the end of DCB_disk.
//
//
typedef struct _DCB_floppy { /* */
DCB_disk DCB_filler_3; /* standard dcb header */
USHORT DCB_3mode_Flags; /* 3mode floppy flag */
} DCB_floppy, *pDCB_floppy;
#define DCB_IS_3MODE_DRIVE 0x0001 /* floppy drive supports 3mode access */
#define DCB_SET_RPM_ON_ACCESS 0x0002 /* set spindle speed on every access */
/*
** DCB_disk_geometry structure access into either the actual or apparent
** DCB geometry fields
*/
typedef struct _DCB_disk_geometry { /* */
ULONG sector_cnt[2];/* number of sectors */
ULONG blk_size; /* actual block size of the device */
/* as seen below the tsd. */
ULONG head_cnt; /* number of heads as seen below */
/* the tsd. */
ULONG cyl_cnt; /* number of cylinders as seen */
/* below the tsd. */
ULONG spt; /* number of sectors per track as */
/* seen below the tsd. */
} DCB_disk_geometry, *pDCB_disk_geometry;
/* ASM
.errnz DCB_apparent_sector_cnt - DCB_apparent_sector_cnt[0] - sector_cnt[0]
.errnz DCB_apparent_blk_size - DCB_apparent_sector_cnt[0] - blk_size
.errnz DCB_apparent_head_cnt - DCB_apparent_sector_cnt[0] - head_cnt
.errnz DCB_apparent_cyl_cnt - DCB_apparent_sector_cnt[0] - cyl_cnt
.errnz DCB_apparent_spt - DCB_apparent_sector_cnt[0] - spt
.errnz DCB_actual_sector_cnt - DCB_actual_sector_cnt[0] - sector_cnt[0]
.errnz DCB_actual_blk_size - DCB_actual_sector_cnt[0] - blk_size
.errnz DCB_actual_head_cnt - DCB_actual_sector_cnt[0] - head_cnt
.errnz DCB_actual_cyl_cnt - DCB_actual_sector_cnt[0] - cyl_cnt
.errnz DCB_actual_spt - DCB_actual_sector_cnt[0] - spt
*/
/*
** DCB_disk_bpb_flags definitions follow
*/
#define DCBF_DISK_BPB_USEFAKE 0x00000001
/*
** maximum size of a Table of Contents for a CDROM
*/
#define CDROM_MAX_TOC 804
/*
** maximum size of a mode sense buffer for CDROM
*/
#define CDROM_MAX_MODE_BUF 20
typedef struct _DCB_cdrom { /* */
DCB DCB_filler_2; /* standard dcb header */
ULONG DCB_cdrom_Partition_Start; /* partition start sector */
ULONG DCB_cdrom_Partition_End; /* partition end sector */
UCHAR DCB_cd_ls_ft; /* first track number in the last sess*/
ULONG DCB_TOC[202]; //[CDROM_MAX_TOC / 4 + 1]; /* cdrom toc buffer */
/* ASM
.errnz (DCB_TOC / 4) * 4 - DCB_TOC
*/
ULONG DCB_cd_mode_sense_buf[6]; //[CDROM_MAX_MODE_BUF /4 + 1]; /* cdrom mode */
UCHAR DCB_cd_first_session; /* index number of first session */
UCHAR DCB_cd_last_session; /* index of last session on disc */
ULONG DCB_play_resume_start; /* re-start address when paused(LBA) */
ULONG DCB_play_resume_stop; /* end of re-started play (LBA) */
ULONG DCB_play_status; /* last command play status */
ULONG DCB_cd_device_flags; /* flags indicating the audio support
capabilities of the device */
UCHAR DCB_cd_fs_lt; /* last track in the first session */
UCHAR DCB_cd_bobbit_pt; /* indicates the track where a CDPLUS disc is */
/* chopped off to prevent data tracks from showing */
/* up in the table of contents */
ULONG DCB_cd_fs_lo; /* lead out address of first session */
ULONG DCB_cd_last_session_start ; /* LBA start address of data area in
the last session on a multi-session disc */
ULONG DCB_cd_current_block_size; /* current block size selected by the
mode command */
UCHAR DCB_cd_vol_map[8]; /* current volume / channel mapping */
ULONG DCB_cd_current_command; /* current command */
ULONG DCB_cd_queue_head; /* head of current command queue */
UCHAR DCB_cd_grp1_time[2]; /* group 1 command timeouts */
UCHAR DCB_cd_grp2_time[2]; /* group 2 command timeouts */
ULONG DCB_cd_dvd_copy_flags; /* dvd copy protection bytes */
} DCB_cdrom, *PDCB_cdrom;
typedef struct type_sdeffsd_req_usage { /* */
USHORT _IOR_ioctl_drive;
USHORT _IOR_ioctl_function ;
ULONG _IOR_ioctl_control_param ;
ULONG _IOR_ioctl_buffer_ptr;
ULONG _IOR_ioctl_client_params;
ULONG _IOR_ioctl_return;
} _type_sdeffsd_req_usage;
typedef union urequestor_usage { /* */
ULONG _IOR_requestor_usage[5];
type_sdeffsd_req_usage sdeffsd_req_usage;
} _urequestor_usage;
typedef void (* CMDCPLT)(void);
typedef struct _IOR { /* */
ULONG IOR_next; /* client link for BCB's */
/* (MBZ for IORF_VERSION_002) */
USHORT IOR_func; /* function to be performed - see */
/* defines below. */
USHORT IOR_status; /* request status - see defines */
/* below. */
ULONG IOR_flags; /* request control flags - see */
/* defines below. */
CMDCPLT IOR_callback; /* address to call request back to if */
/* IORF_SYNC_COMMAND is not set. */
ULONG IOR_start_addr[2]; /* volume relative starting addr */
/* if IORF_LOGICAL_START_SECTOR is set.*/
/* physical if not set. */
ULONG IOR_xfer_count; /* number of sectors to process if */
/* IORF_CHAR_COMMAND is not set, or # */
/* of bytes if it is set. */
/* MUST be set to zero if no data xfer */
ULONG IOR_buffer_ptr; /* BlockDev client buffer pointer. */
/* Contains pointer to data buffer */
/* or to null terminated list of sgd's */
/* depending on IORF_SCATTER_GATHER */
/* Undefined if no data transfer */
ULONG IOR_private_client; /* BlockDev/IOS client reserved */
ULONG IOR_private_IOS; /* reserved space for IOS */
ULONG IOR_private_port; /* private area for port driver */
union urequestor_usage _ureq;
/* requestor usage area, also used for */
/* IOCTL's */
ULONG IOR_req_req_handle; /* requestor provided request */
/* handle. often is a pointer to */
/* to this ior or its containing */
/* iop. pushed on the stack by IOS */
/* before IOR_callback is called */
ULONG IOR_req_vol_handle; /* requestor provided media handle */
/* designating the media to perform */
/* the function on (VRP). */
ULONG IOR_sgd_lin_phys; /* pointer to first physical sgd, as */
/* contrasted with IOR_buffer_ptr, */
/* which points to the logical sgds. */
/* this is either a linear or phys */
/* address, depending on the needs */
/* of the drivers, as indicated */
/* via the DCB demand bits. */
UCHAR IOR_num_sgds; /* number of phys sgd's pointed to by */
/* IOR_sgd_lin_phys */
UCHAR IOR_vol_designtr; /* numeric representation of the */
/* drive letter designating the */
/* volume to perform the function */
/* on (c: = 2). */
USHORT IOR_ios_private_1; /* reserved by IOS to force alignment */
ULONG IOR_reserved_2[2]; /* reserved for internal use */
} IOR, *PIOR;
struct IOP_callback_entry { /* */
ULONG IOP_CB_address; /* call back address */
ULONG IOP_CB_ref_data; /* pointer to callback ref data */
} ;
#define IOP_CALLBACK_TABLE_DEPTH 6
/*
** i/o request packet - offset 0
*/
typedef struct _IOP { /* */
ULONG IOP_physical; /* physical address of IOP. */
ULONG IOP_physical_dcb; /* pointer to physical dcb. */
ULONG IOP_original_dcb; /* ptr to dcb designated by ior. */
/*
** offset 20 (hex)
*/
USHORT IOP_timer; /* rcb current timeout value. */
USHORT IOP_timer_orig; /* rcb original timeout value. */
ULONG IOP_calldown_ptr; /* ptr to next calldown routine. */
ULONG IOP_callback_ptr; /* ptr to current callback address. */
/*
** offset 30 (hex)
*/
ULONG IOP_voltrk_private; /* for use by volume tracking. BUGBUG BGP- I */
/* only need one byte of this, but to maintain */
/* alignment it's a dword. */
ULONG IOP_Thread_Handle; /* contains the handle of the thread in whose*/
/* context this IO originated. This is inited*/
/* in IOS_SendCommand. */
ULONG IOP_srb; /* used by SCSI'izers to pass SRB pointer to */
/* next layer */
ULONG IOP_reserved[2]; /* reserved for future use - must be zero */
/*
** offset 44 (hex)
*/
IOP_callback_entry IOP_callback_table[6];//IOP_CALLBACK_TABLE_DEPTH]; // RCB_CallBackTable
/*
** offset 74 (hex)
*/
BYTE IOP_format_head; /* fields for low level format */
BYTE IOP_format_xfer_rate;
USHORT IOP_format_track;
ULONG IOP_format_num_sectors;
IOR IOP_ior; /* i/o request descriptor */
} IOP, *pIOP;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -