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

📄 tsk_vs.h

📁 linux下开发的针对所有磁盘的数据恢复的源码
💻 H
字号:
/* * The Sleuth Kit * * Brian Carrier [carrier <at> sleuthkit [dot] org] * Copyright (c) 2003-2008 Brian Carrier.  All rights reserved * * This software is distributed under the Common Public License 1.0 * *//** * \file tsk_vs.h * External header file for media management (volume system) support. * Note that this file is not meant to be directly included.   * It is included by both libtsk.h and tsk_vs_i.h. *//** * \defgroup vslib Volume System Functions */#ifndef _TSK_VS_H#define _TSK_VS_H#ifdef __cplusplusextern "C" {#endif/* Structures */    typedef struct TSK_VS_INFO TSK_VS_INFO;    typedef struct TSK_VS_PART_INFO TSK_VS_PART_INFO;    /**      * Definition for callback function that vs_part_walk() calls for     * each partition that it walks.       *     * @param a_vs Pointer to volume system being analyzed     * @param a_vs_part Pointer to current partition in the walk     * @param a_ptr Pointer that was passed to vs_part_walk by caller     * @returns Status on whether the vs_part_walk() function should      * continue, stop, or error.      */    typedef TSK_WALK_RET_ENUM(*TSK_VS_PART_WALK_CB) (TSK_VS_INFO *        a_vs, const TSK_VS_PART_INFO * a_vs_part, void *a_ptr);    /**     * Flags for the partition type.       */    typedef enum {        TSK_VS_TYPE_DETECT = 0x0000,    ///< Use autodetection methods        TSK_VS_TYPE_DOS = 0x0001,       ///< DOS Partition table        TSK_VS_TYPE_BSD = 0x0002,       ///< BSD Partition table        TSK_VS_TYPE_SUN = 0x0004,       ///< Sun VTOC        TSK_VS_TYPE_MAC = 0x0008,       ///< Mac partition table        TSK_VS_TYPE_GPT = 0x0010,       ///< GPT partition table        TSK_VS_TYPE_UNSUPP = 0xffff,    ///< Unsupported    } TSK_VS_TYPE_ENUM;    /**     * Data structure used to store state and basic information     * for open volume systems.     */    struct TSK_VS_INFO {        TSK_IMG_INFO *img_info; ///< Pointer to disk image that VS is in        TSK_VS_TYPE_ENUM vstype;        ///< Type of volume system / media management        TSK_DADDR_T offset;     ///< Byte offset where VS starts in disk image        unsigned int block_size;        ///< Size of blocks in bytes        TSK_ENDIAN_ENUM endian; ///< Endian ordering of data        TSK_VS_PART_INFO *part_list;    ///< Linked list of partitions        TSK_PNUM_T part_count;  ///< number of partitions         void (*close) (TSK_VS_INFO *);    };/*************************************************************** * Generic structures  for partitions / slices */    /**      * Flag values that describe the partitions in the VS.  Refer     * to \ref vs_open2 for more details.      */    typedef enum {        TSK_VS_PART_FLAG_ALLOC = 0x01,  ///< Sectors are allocated to a volume in the volume system        TSK_VS_PART_FLAG_UNALLOC = 0x02,        ///< Sectors are not allocated to a volume         TSK_VS_PART_FLAG_META = 0x04,   ///< Sectors contain volume system metadata and could also be ALLOC or UNALLOC        TSK_VS_PART_FLAG_ALL = 0x07,    ///< Show all sectors in the walk.     } TSK_VS_PART_FLAG_ENUM;    /**     * Linked list entry that describes a volume in a generic way.      */    struct TSK_VS_PART_INFO {        TSK_VS_PART_INFO *prev; ///< Pointer to previous partition (or NULL)        TSK_VS_PART_INFO *next; ///< Pointer to next partition (or NULL)        TSK_VS_INFO *vs;        ///< Pointer to parent volume system handle        TSK_DADDR_T start;      ///< Sector offset of start of partition        TSK_DADDR_T len;        ///< Number of sectors in partition        char *desc;             ///< UTF-8 description of partition (volume system type-specific)        int8_t table_num;       ///< Table address that describes this partition        int8_t slot_num;        ///< Entry in the table that describes this partition        TSK_PNUM_T addr;        ///< Address of this partition        TSK_VS_PART_FLAG_ENUM flags;    ///< Flags for partition    };    // to and from type ids and names    extern TSK_VS_TYPE_ENUM tsk_vs_type_toid(const TSK_TCHAR *);    extern const char *tsk_vs_type_toname(TSK_VS_TYPE_ENUM);    extern const char *tsk_vs_type_todesc(TSK_VS_TYPE_ENUM);    extern TSK_VS_TYPE_ENUM tsk_vs_type_supported();    extern void tsk_vs_type_print(FILE *);    // open a volume system    extern TSK_VS_INFO *tsk_vs_open(TSK_IMG_INFO *, TSK_DADDR_T,        TSK_VS_TYPE_ENUM);    extern void tsk_vs_close(TSK_VS_INFO *);    // read data in the volume system    extern ssize_t tsk_vs_read_block(TSK_VS_INFO * a_vs,        TSK_DADDR_T a_addr, char *buf, size_t len);    // open a partition    extern const TSK_VS_PART_INFO *tsk_vs_part_get(const TSK_VS_INFO *,        TSK_PNUM_T idx);    extern uint8_t tsk_vs_part_walk(TSK_VS_INFO * vs, TSK_PNUM_T start,        TSK_PNUM_T last, TSK_VS_PART_FLAG_ENUM flags,        TSK_VS_PART_WALK_CB action, void *ptr);    // read data in partitions    extern ssize_t tsk_vs_part_read(const TSK_VS_PART_INFO *        a_vs_part, TSK_OFF_T a_off, char *buf, size_t len);    extern ssize_t tsk_vs_part_read_block(const TSK_VS_PART_INFO *        a_vs_part, TSK_DADDR_T a_addr, char *buf, size_t len);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

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