⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdrwtool.h

📁 udf文件系统工具软件
💻 H
字号:
/* * Perform all sort of actions on a CD-R, CD-RW, and DVD-R drive. * * Copyright Jens Axboe, 1999, 2000 * * Released under the GPL licences. * */#ifndef _CDRWTOOL_H#define _CDRWTOOL_H 1#include <inttypes.h>#include <linux/cdrom.h>#include "../include/libudffs.h"/* * define this to be the default cdrom device */#define CDROM_DEVICE	"/dev/scd1"/* * adjust these values if commands are timing out before completion */#define WAIT_PC			(5 * HZ)#define WAIT_SYNC		(25 * HZ)#define WAIT_BLANK		(60 * 60 * HZ)/* * define this to 0 to make format and blank block until the entire * operation has succeeded. otherwise control is returned as soon as * the drive has verified the command -- this can be used for polling * the device for completion. */#define USE_IMMED 0#define PAGE_CURRENT	0#define PAGE_CHANGE	1#define PAGE_DEFAULT	2#define PAGE_SAVE	3#define BLANK_FULL	1#define BLANK_FAST	2#define WRITE_MODE1	1#define WRITE_MODE2	2	/* mode2, form 1 */#define CDROM_BLOCK	2048#define PACKET_BLOCK	32#define PACKET_SIZE	CDROM_BLOCK*PACKET_BLOCK#ifndef NAME_MAX#define NAME_MAX	255#endif#define DEFAULT_SPEED	12typedef struct{	unsigned char	ls_v;			/* link_size valid */	unsigned char	border;			/* or session */	unsigned char	fpacket;		/* fixed, variable */	unsigned char	track_mode;		/* control nibbler, sub q */	unsigned char	data_block;		/* write type */	unsigned char	link_size;		/* links loss size */	unsigned char	session_format;		/* session closure settings */	unsigned long	packet_size;		/* fixed packet size */} write_params_t;struct cdrw_disc{	char		filename[NAME_MAX];	/* file to write */	unsigned long	offset;			/* write file / format */	unsigned char	get_settings;		/* just print settings */	unsigned char	set_settings;		/* save settings */	unsigned char	blank;			/* blank cdrw disc */	unsigned char	fpacket;		/* fixed/variable packets */	unsigned char	packet_size;		/* fixed packet size */	unsigned char	link_size;		/* link loss size */	unsigned char	write_type;		/* mode1 or mode2 */	unsigned char	disc_track_info;	/* list disc/track info */	unsigned char	format;			/* format disc */	unsigned char	border;			/* border/session */	unsigned char	speed;			/* writing speed */	unsigned int	buffer;			/* buffer size */	unsigned int	reserve_track;		/* reserve a track */	unsigned char	quick_setup;	unsigned char	mkudf;	unsigned int	close_track;	unsigned int	close_session;	struct udf_disc	udf_disc;};#ifndef be16_to_cpu#define be16_to_cpu(x) \        ((uint16_t)( \                (((uint16_t)(x) & (uint16_t)0x00ffU) << 8) | \                (((uint16_t)(x) & (uint16_t)0xff00U) >> 8) ))#endif#ifndef be32_to_cpu#define be32_to_cpu(x) \        ((uint32_t)( \                (((uint32_t)(x) & (uint32_t)0x000000ffUL) << 24) | \                (((uint32_t)(x) & (uint32_t)0x0000ff00UL) <<  8) | \                (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >>  8) | \                (((uint32_t)(x) & (uint32_t)0xff000000UL) >> 24) ))#endiftypedef struct disc_info {	uint16_t length;#if __BYTE_ORDER == __BIG_ENDIAN	unsigned char reserved1	: 3;	unsigned char erasable	: 1;	unsigned char border	: 2;	unsigned char status	: 2;#elif __BYTE_ORDER == __LITTLE_ENDIAN	unsigned char status	: 2;	unsigned char border	: 2;	unsigned char erasable	: 1;	unsigned char reserved1	: 3;#else#error "<bits/endian.h> is wack"#endif	uint8_t n_first_track;	uint8_t n_sessions_l;	uint8_t first_track_l;	uint8_t last_track_l;#if __BYTE_ORDER == __BIG_ENDIAN	unsigned char did_v	: 1;	unsigned char dbc_v	: 1;	unsigned char uru	: 1;	unsigned char reserved2	: 5;#elif __BYTE_ORDER == __LITTLE_ENDIAN	unsigned char reserved2	: 5;	unsigned char uru	: 1;	unsigned char dbc_v	: 1;	unsigned char did_v	: 1;#endif	uint8_t disc_type;	uint8_t n_sessions_m;	uint8_t first_track_m;	uint8_t last_track_m;	uint32_t disc_id;	uint8_t lead_in_r;	uint8_t lead_in_m;	uint8_t lead_in_s;	uint8_t lead_in_f;	uint8_t lead_out_r;	uint8_t lead_out_m;	uint8_t lead_out_s;	uint8_t lead_out_f;	uint8_t disc_bar_code[8];	uint8_t reserved3;	uint8_t opc_entries;} disc_info_t;typedef struct track_info {	uint16_t info_length;	uint8_t track_number_l;	uint8_t session_number_l;	uint8_t reserved1;#if __BYTE_ORDER == __BIG_ENDIAN	uint8_t reserved2		: 2;	uint8_t damage		: 1;	uint8_t copy		: 1;	uint8_t track_mode		: 4;	uint8_t rt			: 1;	uint8_t blank		: 1;	uint8_t packet		: 1;	uint8_t fp			: 1;	uint8_t data_mode		: 4;	uint8_t reserved3		: 6;	uint8_t lra_v		: 1;	uint8_t nwa_v		: 1;#elif __BYTE_ORDER == __LITTLE_ENDIAN	uint8_t track_mode		: 4;	uint8_t copy		: 1;	uint8_t damage		: 1;	uint8_t reserved2		: 2;	uint8_t data_mode		: 4;	uint8_t fp			: 1;	uint8_t packet		: 1;	uint8_t blank		: 1;	uint8_t rt			: 1;	uint8_t nwa_v		: 1;	uint8_t lra_v		: 1;	uint8_t reserved3		: 6;#endif	uint32_t track_start;	uint32_t next_writable;	uint32_t free_blocks;	uint32_t packet_size;	uint32_t track_size;	uint32_t last_recorded;	uint8_t track_number_m;	uint8_t session_number_m;	uint8_t reserved4;	uint8_t reserved5;} track_info_t;typedef struct opc_table {	uint16_t speed;	uint8_t opc_value[6];} opc_table_t;typedef struct disc_capacity {	uint32_t lba;	uint32_t block_length;} disc_capacity_t;int msf_to_lba(int, int, int);void hexdump(const void *, int);void dump_sense(unsigned char *, struct request_sense *);int wait_cmd(int, struct cdrom_generic_command *, unsigned char *, int, int);int mode_select(int, unsigned char *, int);int mode_sense(int, unsigned char *, int, char, int);int set_write_mode(int, write_params_t *);int get_write_mode(int, write_params_t *);int sync_cache(int);int write_blocks(int, char *, int, int);int write_file(int, struct cdrw_disc *);int blank_disc(int, int);int format_disc(int, struct cdrw_disc *);int read_disc_info(int, disc_info_t *);int read_track_info(int, track_info_t *, int);int reserve_track(int, struct cdrw_disc *);int close_track(int, unsigned int);int read_buffer_cap(int, struct cdrw_disc *);int set_cd_speed(int, int);void cdrom_close(int);int cdrom_open_check(int);void print_disc_info(disc_info_t *);void print_track_info(track_info_t *);int print_disc_track_info(int);void make_write_page(write_params_t *, struct cdrw_disc *);void print_params(write_params_t *);void cdrw_init_disc(struct cdrw_disc *);#endif /* _CDRWTOOL_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -