コード例 #1
0
static int check_isatapi (int unitnum)
{
	struct dev_info_spti *di = unitcheck (unitnum);
	if (!di)
		return 0;
	return di->isatapi;
}
コード例 #2
0
static struct dev_info_spti *unitisopen (int unitnum)
{
	struct dev_info_spti *di = unitcheck (unitnum);
	if (!di)
		return NULL;
	if (di->open == false)
		return NULL;
	return di;
}
コード例 #3
0
static void close_device (int unitnum)
{
	struct dev_info_ioctl *ciw = unitcheck (unitnum);
	if (!ciw)
		return;
	sys_cddev_close (ciw, unitnum);
	blkdev_cd_change (unitnum, ciw->drvlettername);
	unittable[unitnum] = 0;
}
コード例 #4
0
static struct device_info *info_device (int unitnum, struct device_info *di, int quick)
{
	struct dev_info_spti *dispti = unitcheck (unitnum);
	if (!dispti)
		return NULL;
	if (!quick)
		update_device_info (unitnum);
	dispti->di.open = dispti->open;
	memcpy (di, &dispti->di, sizeof (struct device_info));
	return di;
}
コード例 #5
0
static struct device_info *info_device (int unitnum, struct device_info *di, int quick, int session)
{
	struct dev_info_ioctl *ciw = unitcheck (unitnum);
	if (!ciw)
		return 0;
	if (!quick)
		update_device_info (unitnum);
	ciw->di.open = ciw->open;
	memcpy (di, &ciw->di, sizeof (struct device_info));
	return di;
}
コード例 #6
0
static void update_device_info (int unitnum)
{
	struct dev_info_ioctl *ciw = unitcheck (unitnum);
	if (!ciw)
		return;
	struct device_info *di = &ciw->di;
	di->bus = unitnum;
	di->target = 0;
	di->lun = 0;
	di->media_inserted = 0;
	di->bytespersector = 2048;
	_stprintf (di->mediapath, _T("\\\\.\\%c:"), ciw->drvletter);
	if (fetch_geometry (ciw, unitnum, di)) { // || ioctl_command_toc (unitnum))
		di->media_inserted = 1;
	}
	ioctl_command_toc2 (unitnum, &di->toc, true);
	di->removable = ciw->type == DRIVE_CDROM ? 1 : 0;
	di->write_protected = ciw->type == DRIVE_CDROM ? 1 : 0;
	di->type = ciw->type == DRIVE_CDROM ? INQ_ROMD : INQ_DASD;
	di->unitnum = unitnum + 1;
	_tcscpy (di->label, ciw->drvlettername);
	di->backend = _T("IOCTL");
}