亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? drivers.h

?? Dos6.0
?? H
字號:
/***
* $Workfile:   drivers.h  $
* $Revision:   1.3  $
*   $Author:   Dave Sewell  $
*     $Date:   08 Aug 1989 16:43:52  $
***/

/*  drivers.h : Alan Butt : December 19, 1988 : Expansion Box Project
 
    This file contains definitions for device driver structures.
*/

#pragma pack(1)

#define INIT                 0
#define MEDIA_CHECK          1
#define BUILD_BPB            2
#define IOCTL_READ           3
#define READ                 4
#define ND_READ              5
#define INPUT_STATUS         6
#define FLUSH_INPUT          7
#define WRITE                8
#define WRITE_VERIFY         9
#define OUTPUT_STATUS       10
#define FLUSH_OUTPUT        11
#define IOCTL_WRITE         12
#define DEVICE_OPEN         13
#define DEVICE_CLOSE        14
#define REMOVABLE_MEDIA     15
#define OUTPUT_UNTIL_BUSY   16
#define GENERIC_IOCTL       19
#define GET_LOGICAL_DEVICE  23
#define SET_LOGICAL_DEVICE  24

#define MAX_VOLUME          12          // Maximum volume label length

/*  For details on the bpb structure see MS-DOS Encyclopedia page 1349, and
    the section on device drivers.
*/

struct bios_parameter_block {
    word    bytes_per_sector;   // Bytes per sector
    byte    sectors_per_unit;   // Sectors per allocation unit (power of 2)
    word    reserved_sectors;   // # reserved sectors (starting at sector 0)
    byte    number_of_fats;     // Number of file allocation tables
    word    root_dir_entries;   // Maximum number of root directory entries
    word    total_sectors;      // Total number of sectors in medium
    byte    media_id_byte;      // Media ID byte
    word    sectors_per_fat;    // # of sectors occupied by a single FAT
    word    sectors_per_track;  // Sectors per track (MS-DOS 3.0+)
    word    number_of_heads;    // Number of heads (MS-DOS 3.0+)
    word    hidden_sectors;     // Number of hidden sectors (MS-DOS 3.0+)
    word    high_hidden;        // MSW hidden sectors (MS-DOS 3.2+)
    dword   long_total_sectors; // If total_sectors == 0, Total number of
                                // sectors in medium (MS-DOS 3.2+)
    byte    reserved[6];
};

#define DEVICE_NAME_SIZE 8

struct device_header {                      // Device header structure
    struct  device_header far *next_header; // Link to next driver
    word    attribute;                      // Device driver attribute word
    word    strategy;                       // Offset to strategy entry point
    word    inter;                          // Offset to interrupt entry point
    byte    name_num[DEVICE_NAME_SIZE];     // Device name or number of units
};


/*  The disk paramenter structure is used by undocumented DOS calls 0x32, 0x52,
    and 0x53.  This structure is defined for MS-DOS 2.0 - MS-DOS 4.0.
*/

struct dpb_dos2 {
    byte drive;                     // Drive # (0 = A, 1 = B, ...)
    byte unit;                      // Unit number within device driver
    word bytes_per_sector;          // Number of bytes per sector
    byte max_cluster;               // Largest sector number in cluster
                                    //  add one for number of sectors/cluster
    byte log2_cluster;              // Log base two of the cluster size
    word reserved_sectors;          // Number of reserved (boot) sectors
    byte number_of_fats;            // Number of copies of the FAT
    word root_dir_entries;          // Number of root directory entries
    word first_data;                // First sector of data on medium
    word max_number;                // Largest possible cluster number
                                    //  subtract one for number of clusters
    byte sectors_per_fat;           // Number of sectors in one FAT copy
    word first_root;                // First sector of root directory
    struct device_header far *device_driver;
                                    // Corresponding device driver address
    byte media_id;                  // Media descriptor byte
    byte valid;                     // 0FF indicates block must be rebuild
    struct dpb_dos2 far *next_block;
                                    // address of next device block in list
    word dir_start;                 // Starting cluster of current directory
                                    //  zero indicates the root directory
    char path_name[64];             // ASCIIZ current directory path string
};

struct dpb_dos3 {
    byte drive;                     // Drive # (0 = A, 1 = B, ...)
    byte unit;                      // Unit number within device driver
    word bytes_per_sector;          // Number of bytes per sector
    byte max_cluster;               // Largest sector number in cluster
                                    //  add one for number of sectors/cluster
    byte log2_cluster;              // Log base two of the cluster size
    word reserved_sectors;          // Number of reserved (boot) sectors
    byte number_of_fats;            // Number of copies of the FAT
    word root_dir_entries;          // Number of root directory entries
    word first_data;                // First sector of data on medium
    word max_number;                // Largest possible cluster number
                                    //  subtract one for number of clusters
    byte sectors_per_fat;           // Number of sectors in one FAT copy
    word first_root;                // First sector of root directory
    struct device_header far *device_driver;
                                    // Corresponding device driver address
    byte media_id;                  // Media descriptor byte
    byte valid;                     // 0FF indicates block must be rebuild
    struct dpb_dos3 far *next_block;
                                    // address of next device block in list
    word unknown_zero;              // Unknown value (usually zero?)
    word unknown_ffff;              // Unknown value (usually ffff?)
};


struct dpb_dos4 {
    byte drive;                     // Drive # (0 = A, 1 = B, ...)
    byte unit;                      // Unit number within device driver
    word bytes_per_sector;          // Number of bytes per sector
    byte max_cluster;               // Largest sector number in cluster
                                    //  add one for number of sectors/cluster
    byte log2_cluster;              // Log base two of the cluster size
    word reserved_sectors;          // Number of reserved (boot) sectors
    byte number_of_fats;            // Number of copies of the FAT
    word root_dir_entries;          // Number of root directory entries
    word first_data;                // First sector of data on medium
    word max_number;                // Largest possible cluster number
                                    //  subtract one for number of clusters
    byte sectors_per_fat;           // Number of sectors in one FAT copy
    byte unknown_byte;              // Unknown byte
    word first_root;                // First sector of root directory
    struct device_header far *device_driver;
                                    // Corresponding device driver address
    byte media_id;                  // Media descriptor byte
    byte valid;                     // 0FF indicates block must be rebuild
    struct dpb_dos4 far *next_block;
                                    // address of next device block in list
    word unknown_zero;              // Unknown value (usually zero?)
    word unknown_ffff;              // Unknown value (usually ffff?)
};

union dpb {
    struct dpb_dos2 dos2;           // Disk parameter block for DOS 2.0+
    struct dpb_dos3 dos3;           // Disk parameter block for DOS 3.0+
    struct dpb_dos4 dos4;           // Disk parameter block for DOS 4.0+
};

/*  Device attribute codes:  ATT_* define the various bits to be used in the
    device driver attribute word of the device header.
*/

#define ATT_CHARACTER   0x8000          // Character device
#define ATT_BLOCK       0x0000          // Block device
#define ATT_IOCTL       0x4000          // IOCTL read and write supported
#define ATT_NON_IBM     0x2000          // Non-IBM format (block)
#define ATT_OUTBUSY     0x2000          // Output Until Busy supported (Char)
#define ATT_OCRM        0x0800          // Open/Close/Removeable media supported*
#define ATT_GEN_IOCTL   0x0040          // Generic IOCTL & Get/Set log dev**
#define ATT_INT29       0x0010          // accepts special interupt 29h
#define ATT_CLOCK       0x0008          // this is the CLOCK device
#define ATT_NUL         0x0004          // Current NUL device
#define ATT_HUGE        0x0002          // 32-bit sector addressing (block)
#define ATT_STDOUT      0x0002          // Current standard output
#define ATT_STDIN       0x0001          // Current standard input
                                        // *  MS-DOS 3.0+
                                        // ** MS-DOS 3.2+

#define STATUS_ERROR    0x8000          // error status
#define STATUS_BUSY     0x0200          // busy status
#define STATUS_DONE     0x0100          // Done

#define ERR_WRITE_PROT  0x00            // write-protect error
#define ERR_UNK_UNIT    0x01            // Unknown unit
#define ERR_NOT_READY   0x02            // Drive not ready
#define ERR_UNK_COMMAND 0x03            // Unknown command
#define ERR_CRC         0x04            // CRC error
#define ERR_BAD_LENGTH  0x05            // Bad drive request structure length
#define ERR_SEEK        0x06            // Seek error
#define ERR_UNK_MEDIA   0x07            // Unknown media
#define ERR_NOT_FOUND   0x08            // Sector not found
#define ERR_PAPER_OUT   0x09            // Printer out of paper
#define ERR_WRITE_FAULT 0x0a            // Write fault
#define ERR_READ_FAULT  0x0b            // Read fault
#define ERR_FAILURE     0x0c            // General Failure
#define ERR_DISK_CHANGE 0x0f            // Invalid disk change


#define MEDIA_CHANGED      -1           // Media changed code
#define MEDIA_DONT_KNOW     0           // Don't know if media has changed
#define MEDIA_NOT_CHANGED   1           // Media has not changed code

#define MEDIA_5_25_DS_15    0xF9        // 5.25" double sided, 15 sector
#define MEDIA_5_25_SS_9     0xFC        // 5.25" single sided, 9 sector
#define MEDIA_5_25_DS_9     0xFD        // 5.25" double sided, 9 sector
#define MEDIA_5_25_SS_8     0xFE        // 5.25" single sided, 8 sector
#define MEDIA_5_25_DS_8     0xFF        // 5.25" double sided, 8 sector
#define MEDIA_3_5_DS_9      0xF9        // 3.5"  double sided, 9 sector
#define MEDIA_FIXED_DISK    0xF8        // Fixed disk
#define MEDIA_3_5_DS_18     0xF0        // 3.5"  double sided, 18 sector

struct static_rhp {                     // Static RHP definition
    byte    rhp_length;                 // Request header length
    byte    rhp_unit;                   // Block-device unit number
    byte    rhp_command;                // Command code (driver subfunction)
    word    rhp_status;                 // Driver return status
    byte    reserved[0x0d - 0x05];
};


struct init_req {                       // initialize request
    struct  static_rhp s;
    byte    reserved[5];
    char far *init_cmd;                 // Segment:Offset of line loading driver
    byte    init_first;                 // First unit number
};


struct  init_ans {                      // Initialization answer
    struct  static_rhp s;
    byte    init_units;                 // Units supported
    void far *init_end;                 // Segment:offset free mem above driver
    void far *init_bpb;                 // Segment:Offset BPB pointer array
};



struct media_check_req {                // Media Check request
    struct  static_rhp s;
    byte    media_id;                   // Media ID byte
};

struct media_check_ans {                // Media check answer
    struct  static_rhp s;
    byte    reserved;
    byte    media_changed;              // Media changed code
    char far *media_label;              // Segment:Offset of volume label
};



struct build_bpb_req {                  // Build BPB request
    struct  static_rhp s;
    byte    media_id;                   // Media ID byte
    char far *bpb_fat;                  // Segment:Offset of FAT buffer
};

struct build_bpb_ans {                  // Build BPB answer
    struct  static_rhp s;
    byte    reserved[5];
    struct bios_parameter_block far *bpb_bpb;
                                        // Segment:Offset of BPB
};



struct io_req {     // Read/Write/Write-Verify/IOCTL-Read/IOCTL-Write request
    struct  static_rhp s;
    byte    media_id;                   // Media ID byte
    char far *io_data;                  // Segment:Offset of data
    word    io_requested;               // Bytes/Sectors Requested
    word    io_start;                   // Starting sector number (LSW)
    word    io_start_high;              // Starting sector number (MSW) (MS-DOS 3.31)
    word    reserved;
    dword   io_huge_start;              // 32-bit sector number (MS-DOS 4.0+)
};

struct io_ans {     // Read/Write/Write-Verify/IOCTL-Read/IOCTL-Write answer
    struct  static_rhp s;
    byte    reserved[5];
    word    io_transfered;              // Bytes/Sectors transfered
    word    reserved2;
    char far *io_label;                 // Segment:Offset of volume label
};


struct nd_read_ans {                    // Non-Destructive read answer
    struct  static_rhp s;
    byte    nd_read_char;               // Character read
};


struct gen_ioctl_req {                  // Generic IOCTL request
    struct  static_rhp s;
    byte    gen_category;               // Category (major) code
    byte    gen_function;               // Function (minor) code
    word    gen_si;                     // SI register contents
    word    gen_di;                     // DI register contents
    void far *gen_data;                 // Segment:Offset of data package
};

struct media_id_buffer {
    word  info_level;
    dword serial_number;
    byte  volume_label[11];
    byte  file_sys_type[8];
};

struct device_params {
   byte   dpSpecFunc;                   // special functions
   byte   dpDevType;                    // device type
   word   dpDevAttr;                    // device attributes
   word   dpCylinders;                  // number of cylinders
   byte   dpMediaType;                  // media type
   struct bios_parameter_block bpb;     // BPB
};

#define MAX_DEVICES         26          // Maximum number of units for the block
                                        // device drivers.

#define MAX_CHAR_DEVICES    20          // Max # of character devices
#define MAX_RHP             32          // Maximum size of an RHP
#define PRODUCT_DOSLINK     0           // Product code
#define PRODUCT_VERSION     (((MAJOR_VERSION << 8) | MINOR_VERSION))
#define STACK_SIZE          256         // Device driver stack size (in bytes)
#define MAX_PRINTERS        3           // Max printers that can be redirected

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频在线观看免费| 99精品欧美一区二区蜜桃免费| 久久99久久精品| 91视视频在线直接观看在线看网页在线看 | 亚洲成av人片| 国产一区二区三区观看| 欧美视频中文一区二区三区在线观看| 日韩免费视频一区二区| 亚洲欧洲日韩女同| 久久99久国产精品黄毛片色诱| 99免费精品在线观看| 精品av久久707| 天天影视涩香欲综合网| 91免费观看在线| 国产精品久久免费看| 精品一区二区三区视频| 欧美这里有精品| 自拍偷拍亚洲激情| 国产成人免费视频网站| 精品国产亚洲一区二区三区在线观看 | 成人av动漫网站| 久久精品视频免费| 精久久久久久久久久久| 欧美一区二区三区男人的天堂| 亚洲综合激情网| 色综合天天综合狠狠| 一色屋精品亚洲香蕉网站| 国产福利电影一区二区三区| 精品精品国产高清一毛片一天堂| 日韩精品1区2区3区| 欧美日韩久久不卡| 日韩高清不卡一区二区三区| 欧美午夜电影网| 亚洲国产精品欧美一二99| 欧洲在线/亚洲| 亚洲综合色丁香婷婷六月图片| 一本色道a无线码一区v| 一区二区三区在线视频观看| 91年精品国产| 亚洲一区二区偷拍精品| 欧美日韩中文字幕一区| 五月综合激情日本mⅴ| 69堂成人精品免费视频| 蜜臀久久99精品久久久久久9| 日韩视频在线一区二区| 国产一区二三区好的| 欧美国产成人在线| 91无套直看片红桃| 亚洲电影你懂得| 欧美电影免费提供在线观看| 国产综合久久久久久久久久久久| 久久久一区二区三区| 成人伦理片在线| 亚洲午夜激情网页| 日韩欧美激情四射| 国产69精品久久99不卡| 亚洲人成网站在线| 538prom精品视频线放| 国产在线精品免费| 亚洲精品日日夜夜| 欧美一级精品大片| 高清成人免费视频| 伊人开心综合网| 日韩精品一区在线| 91丨九色丨蝌蚪丨老版| 肉丝袜脚交视频一区二区| 久久久三级国产网站| 91同城在线观看| 精品一区二区av| 亚洲精品免费在线| 亚洲精品一区二区在线观看| 99re66热这里只有精品3直播| 亚洲h在线观看| 久久久一区二区三区| 欧美伦理影视网| 成人一级视频在线观看| 五月天婷婷综合| 国产精品超碰97尤物18| 日韩一二三区不卡| 91官网在线免费观看| 国产剧情一区在线| 午夜视频一区在线观看| 亚洲欧洲精品成人久久奇米网| 欧美精品久久一区| 91在线无精精品入口| 国产资源精品在线观看| 亚洲国产精品久久一线不卡| 中文字幕色av一区二区三区| 久久免费美女视频| 欧美一区二区三区视频| 在线观看av不卡| 91视频精品在这里| 大美女一区二区三区| 老司机午夜精品99久久| 亚洲成人动漫精品| 亚洲欧美激情小说另类| 国产亚洲一区二区三区四区| 欧美日韩1区2区| 色婷婷av一区| 成人18视频在线播放| 国产精品亚洲成人| 激情久久久久久久久久久久久久久久| 午夜国产精品影院在线观看| 一区二区三区四区五区视频在线观看 | 精品一区二区三区欧美| 日韩一区欧美二区| 婷婷激情综合网| 午夜成人免费电影| 五月天网站亚洲| 日本最新不卡在线| 日本人妖一区二区| 青青国产91久久久久久| 日韩av中文字幕一区二区三区 | 国产精品二三区| 中文字幕一区二区三区在线播放 | 日韩免费高清电影| 91精品国产免费| 91精品国产综合久久久久久久| 91久久精品日日躁夜夜躁欧美| 99国产欧美另类久久久精品| 丰满少妇在线播放bd日韩电影| 国产不卡一区视频| eeuss影院一区二区三区| 成人免费黄色在线| 91社区在线播放| 精品视频在线免费| 欧美一区二区三区爱爱| 精品国产3级a| 欧美激情综合在线| 亚洲欧洲制服丝袜| 亚洲va韩国va欧美va精品 | 风间由美一区二区三区在线观看| 成人18视频日本| 精品婷婷伊人一区三区三| 91精品国产欧美日韩| 久久久久97国产精华液好用吗| 国产欧美精品国产国产专区| 中文字幕一区在线观看视频| 亚洲成人免费在线| 五月婷婷综合网| 国产一区二区三区观看| 91视频精品在这里| 欧美一区二区在线播放| 国产欧美日本一区视频| 亚洲成人你懂的| 国产成人在线观看免费网站| 色婷婷久久一区二区三区麻豆| 欧美日韩精品是欧美日韩精品| 日韩精品一区二区三区四区| 中文字幕成人在线观看| 亚洲成av人片一区二区梦乃| 国产精品影视网| 欧美日韩综合不卡| 欧美国产日韩a欧美在线观看| 一二三四区精品视频| 精品一区二区久久| 在线视频中文字幕一区二区| 精品精品欲导航| 亚洲一级在线观看| 国产91高潮流白浆在线麻豆| 欧美精品v国产精品v日韩精品 | 99国产精品久久久| 777欧美精品| 亚洲欧美日韩在线播放| 久久99精品一区二区三区三区| 色一情一乱一乱一91av| 精品国产免费久久| 亚洲永久免费视频| 岛国av在线一区| 欧美精品一区在线观看| 亚洲国产成人91porn| proumb性欧美在线观看| 精品国产一二三| 日韩精品一级中文字幕精品视频免费观看 | 国产欧美日韩综合精品一区二区| 亚洲国产成人va在线观看天堂| 成人亚洲一区二区一| 91精品在线观看入口| 依依成人综合视频| 91尤物视频在线观看| 久久精品夜色噜噜亚洲aⅴ| 蜜桃精品视频在线观看| 欧美揉bbbbb揉bbbbb| 一区二区三区日本| av成人免费在线观看| 欧美极品另类videosde| 国产激情视频一区二区三区欧美 | 日本一区二区电影| 黑人巨大精品欧美黑白配亚洲| 欧美精品18+| 亚洲成年人影院| 欧美视频中文字幕| 亚洲国产精品麻豆| 欧美男人的天堂一二区| 亚洲自拍另类综合| 欧美日韩一区二区三区在线 | 日本高清不卡aⅴ免费网站| 中文字幕不卡的av| 波波电影院一区二区三区| 国产精品美女久久久久久久|