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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? disk_io.cpp

?? 不破壞硬盤數(shù)據(jù)的重新劃分硬盤分區(qū)的程序
?? CPP
字號:
/*
	FIPS - the First nondestructive Interactive Partition Splitting program

	Module disk_io.cpp

	RCS - Header:
	$Header: c:/daten/fips/source/main/RCS/disk_io.cpp 1.4 1995/01/19 00:00:51 schaefer Exp schaefer $

	Copyright (C) 1993 Arno Schaefer

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


	Report problems and direct all questions to:

	schaefer@rbg.informatik.th-darmstadt.de
*/

#include "disk_io.h"
#include <dos.h>
#include <bios.h>

#define DISK_INT 0x13

#define RESET_DISK 0
#define READ_SECTOR 2
#define WRITE_SECTOR 3
#define VERIFY_SECTOR 4
#define GET_DRIVE_PARAMS 8
#define GET_DISK_TYPE 0x15


/* ----------------------------------------------------------------------- */
/* Bios call to get the number of drives attached                          */
/* ----------------------------------------------------------------------- */

int get_no_of_drives (void)
{
	union REGS regs;

	regs.h.ah = GET_DRIVE_PARAMS;
	regs.h.dl = 0x80;
	int86 (DISK_INT, &regs, &regs);

	if (regs.h.ah != 0) return (1); // will be checked again
	return (regs.h.dl);
}


/* ----------------------------------------------------------------------- */
/* Calculates physical sector number (Head, Cylinder, Sector).             */
/* Log_sector is absolute logical sector number (0 = master boot record).  */
/* ----------------------------------------------------------------------- */

physical_sector_no::physical_sector_no
(
	dword logical_sector,
	const drive_geometry &geometry
)
{
	cylinder =
		logical_sector
		/ (geometry.heads * geometry.sectors);

	head =
	(
		logical_sector
		- (cylinder * geometry.heads * geometry.sectors)
	)
	/ geometry.sectors;

	sector =
		logical_sector
		- (cylinder * geometry.heads * geometry.sectors)
		- (head * geometry.sectors)
		+ 1;
}


/* ----------------------------------------------------------------------- */
/* Bios call get_drive_geometry, returns error status in var errorcode     */
/* ----------------------------------------------------------------------- */

void physical_drive::get_geometry (void)
{
	union REGS regs;

	regs.h.ah = GET_DRIVE_PARAMS;
	regs.h.dl = number;
	int86 (DISK_INT, &regs, &regs);

	if ((errorcode = regs.h.ah) != 0) return;

	geometry.heads = (dword) regs.h.dh + 1;
	geometry.sectors = (dword) regs.h.cl & 0x3f;
	geometry.cylinders =
	(
		(dword) regs.h.ch
		| (((dword) regs.h.cl << 2) & 0x300)
	) + 1;
}


/* ----------------------------------------------------------------------- */
/* Bios call reset_drive, returns error status in var errorcode            */
/* ----------------------------------------------------------------------- */

void physical_drive::reset (void)
{
	union REGS regs;

	regs.h.ah = RESET_DISK;
	regs.h.dl = number;
	int86 (DISK_INT, &regs, &regs);

	errorcode = regs.h.ah;
}


/* ----------------------------------------------------------------------- */
/* Initialization physical_drive, requires drive number.                   */
/* Calls get_drive_geometry, errorcode contains return status              */
/* ----------------------------------------------------------------------- */

physical_drive::physical_drive (int number)
{
	physical_drive::number = number;
	get_geometry ();
};


/* ----------------------------------------------------------------------- */
/* Initialization physical_drive with physical_drive object                */
/* ----------------------------------------------------------------------- */

physical_drive::physical_drive (physical_drive &pd)
{
	number = pd.number;
	errorcode = pd.errorcode;
	geometry = pd.geometry;
}


/* ----------------------------------------------------------------------- */
/* Assignment operator for physical drive                                  */
/* ----------------------------------------------------------------------- */

void physical_drive::operator= (physical_drive &pd)
{
	number = pd.number;
	errorcode = pd.errorcode;
	geometry = pd.geometry;
}


/* ----------------------------------------------------------------------- */
/* Read sector                                                             */
/* ----------------------------------------------------------------------- */

int physical_drive::read_sector (struct sector *sector, dword sector_number)
{
	physical_sector_no p (sector_number, geometry);

	boolean done = false;

	for (int i=0; i<3; i++)
	{
		if (biosdisk
		(
			READ_SECTOR,
			number,
			p.head,
			p.cylinder,
			p.sector,
			1,
			sector->data
		) == 0)
		{
			done=true;
			break;
		}

		reset ();
	}

	if (!done) return (-1);
	return 0;
}


/* ----------------------------------------------------------------------- */
/* Write sector with verify                                                */
/* ----------------------------------------------------------------------- */

int physical_drive::write_sector (struct sector *sector, dword sector_number)
{
	physical_sector_no p (sector_number,geometry);

	boolean done = false;

	for (int i=0; i<3; i++)
	{
		if (biosdisk
		(
			WRITE_SECTOR,
			number,
			p.head,
			p.cylinder,
			p.sector,
			1,
			sector->data
		) == 0)
		{
			done=true;
			break;
		}

		reset ();
	}

	if (!done) return (-1);

	if (biosdisk
	(
		VERIFY_SECTOR,
		number,
		p.head,
		p.cylinder,
		p.sector,
		1,
		sector->data

	) != 0) return (-1);

	return 0;
}


/* ----------------------------------------------------------------------- */
/* Bios call get_disk_type - returns 0 if drive not present.               */
/* Valid drive numbers: 0 - 255, result: 1 - floppy without disk change    */
/* detection, 2 - floppy with disk change detection, 3 - harddisk          */
/* ----------------------------------------------------------------------- */

int get_disk_type (int drive_number)
{
	union REGS regs;

	regs.h.ah = GET_DISK_TYPE;
	regs.h.dl = drive_number;
	int86 (DISK_INT, &regs, &regs);

	if (regs.x.cflag) return 0;
	return (regs.h.ah);                     // disk type
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一二三四区| 欧美—级在线免费片| 亚洲午夜久久久久| 久久这里只有精品6| 免费成人深夜小野草| 精品国产电影一区二区| 国产精品影视在线观看| 国产精品久久久久久久久动漫 | 亚洲第一主播视频| 欧美精品一卡两卡| 激情综合色丁香一区二区| 国产亚洲精品免费| 91日韩精品一区| 天天色天天爱天天射综合| 日韩女同互慰一区二区| 成人精品gif动图一区| 亚洲欧美日韩国产一区二区三区 | 欧美日本一区二区| 蜜臀av性久久久久蜜臀av麻豆| 日韩欧美123| 成人动漫一区二区在线| 亚洲综合色在线| 久久香蕉国产线看观看99| 99在线视频精品| 日本伊人午夜精品| 欧美国产一区在线| 欧美日本一区二区在线观看| 国产成人综合在线观看| 亚洲综合区在线| 国产婷婷色一区二区三区四区| 欧美在线色视频| 国产精品伊人色| 婷婷国产在线综合| 国产精品久久久久婷婷二区次 | 制服丝袜在线91| 从欧美一区二区三区| 日韩电影一区二区三区| 中文字幕一区二区在线播放| 91精品国产入口| 色av一区二区| 国产乱码一区二区三区| 亚洲h动漫在线| 日韩一区日韩二区| 久久一日本道色综合| 欧美影院午夜播放| 不卡电影一区二区三区| 精品一区二区三区香蕉蜜桃| 亚洲国产视频一区| 亚洲人成网站精品片在线观看| 精品蜜桃在线看| 欧美久久一二三四区| 99vv1com这只有精品| 国产精品99久久久久久似苏梦涵| 视频精品一区二区| 亚洲黄色av一区| 亚洲欧洲三级电影| 亚洲国产高清不卡| 久久婷婷成人综合色| 欧美一区二区久久| 欧美精三区欧美精三区| 欧美性视频一区二区三区| aaa欧美日韩| 成人av在线资源网站| 国产黄色精品网站| 国产一区二区日韩精品| 久久66热re国产| 免费不卡在线视频| 日本大胆欧美人术艺术动态| 亚洲图片欧美一区| 午夜在线电影亚洲一区| 亚洲午夜免费视频| 亚洲第一电影网| 性做久久久久久久免费看| 亚洲午夜免费电影| 天涯成人国产亚洲精品一区av| 亚洲国产毛片aaaaa无费看 | 久久精品亚洲麻豆av一区二区 | 亚洲福利电影网| 亚洲香蕉伊在人在线观| 亚洲午夜久久久久久久久电影院| 一区二区三区电影在线播| 亚洲乱码日产精品bd| 亚洲韩国精品一区| 亚洲成人av资源| 青娱乐精品视频| 激情综合色综合久久综合| 国产伦理精品不卡| 成人国产电影网| 99国产精品久久久| 欧美日韩在线三级| 日韩欧美在线不卡| 国产欧美日韩另类视频免费观看| 国产精品成人免费精品自在线观看| 亚洲欧洲精品成人久久奇米网| 一级精品视频在线观看宜春院| 亚洲成人av免费| 激情综合网av| gogogo免费视频观看亚洲一| 久久精品日韩一区二区三区| 久久久精品黄色| 亚洲男同性视频| 日韩极品在线观看| 国产成人综合网站| 91久久久免费一区二区| 欧美一区二区三区视频| 国产日韩影视精品| 亚洲综合自拍偷拍| 久久99精品久久久久久久久久久久| 国产成人在线影院 | 在线观看亚洲一区| 欧美一区二区三区在线| 国产女人18水真多18精品一级做| 亚洲视频综合在线| 美脚の诱脚舐め脚责91 | 亚洲欧美日韩中文字幕一区二区三区 | 91精品一区二区三区久久久久久 | 国产亚洲午夜高清国产拍精品| 亚洲视频每日更新| 麻豆成人综合网| 99久久婷婷国产综合精品电影| 69成人精品免费视频| 国产精品视频一区二区三区不卡| 亚洲精品久久嫩草网站秘色| 裸体一区二区三区| 色综合婷婷久久| 久久久久久久久久久久久女国产乱| 亚洲六月丁香色婷婷综合久久| 久久99热狠狠色一区二区| 色狠狠综合天天综合综合| 欧美不卡视频一区| 亚洲第一狼人社区| 成人h动漫精品一区二区| 日韩一区二区免费在线电影| 亚洲人成网站色在线观看| 国产激情视频一区二区三区欧美| 欧美三级在线看| 18成人在线观看| 国产真实乱对白精彩久久| 欧美日韩中文字幕一区| 亚洲欧洲制服丝袜| 成人爱爱电影网址| 久久精品网站免费观看| 美女一区二区三区| 欧美日韩国产精品成人| 亚洲精品国产视频| aa级大片欧美| 国产精品久久久久天堂| 国产成人av影院| 久久久久99精品一区| 精品一区二区免费看| 欧美一区二区久久| 青青草国产精品亚洲专区无| 精品视频一区二区不卡| 亚洲免费观看高清| 99久久综合精品| 国产精品国产三级国产专播品爱网| 精一区二区三区| 精品国产伦一区二区三区观看方式| 亚洲一卡二卡三卡四卡| 色欧美日韩亚洲| 亚洲精品视频免费看| 色呦呦国产精品| 亚洲精品v日韩精品| 91视频免费播放| 亚洲狠狠丁香婷婷综合久久久| 91小视频在线观看| 亚洲精品国久久99热| 色婷婷综合久色| 亚洲久本草在线中文字幕| 91色在线porny| 亚洲另类在线制服丝袜| 欧美色窝79yyyycom| 亚洲午夜一区二区| 欧美一二三在线| 韩国一区二区在线观看| 国产欧美精品在线观看| 成人免费看黄yyy456| 最新国产の精品合集bt伙计| 91麻豆精东视频| 亚洲一区二区三区中文字幕| 欧美色图一区二区三区| 视频一区二区三区入口| 精品日韩欧美在线| 国产精品一区免费在线观看| 中国av一区二区三区| 91美女在线视频| 99免费精品视频| 一区二区三区四区视频精品免费| 欧美性生活久久| 麻豆精品视频在线| 久久久九九九九| 色综合视频在线观看| 丝袜诱惑亚洲看片| 久久―日本道色综合久久| 99久久精品国产一区二区三区 | 成人高清视频在线观看| 一区二区三区在线播| 日韩欧美你懂的| bt7086福利一区国产| 婷婷激情综合网|