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

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

?? fatfs.h

?? FAT文件系統源代碼
?? H
?? 第 1 頁 / 共 5 頁
字號:
#define DEBUGMSGWBREAK(cond,msg) if (cond) {DEBUGMSGW(TRUE,msg); DebugBreak();} else

#else   // !DEBUG

#define DEBUGBREAK(cond)
#define DEBUGMSGBREAK(cond,msg)
#define DEBUGMSGWBREAK(cond,msg)

#define ZONE_INIT               FALSE
#define ZONE_ERRORS             FALSE
#define ZONE_SHELLMSGS          TRUE
#define ZONE_TFAT               FALSE
#define ZONE_MEM                FALSE
#define ZONE_APIS               FALSE
#define ZONE_MSGS               FALSE
#define ZONE_STREAMS            FALSE
#define ZONE_BUFFERS            FALSE
#define ZONE_CLUSTERS           FALSE
#define ZONE_FATIO              FALSE
#define ZONE_DISKIO             FALSE
#define ZONE_LOGIO              FALSE
#define ZONE_READVERIFY         FALSE
#define ZONE_WRITEVERIFY        FALSE
#define ZONE_PROMPTS            FALSE

#endif  // !DEBUG

#ifndef UNDER_CE
// NT ONLY
#define PREFAST_DEBUGCHK(a)
#define DEBUGCHK(a)
#define DEBUGMSG(a,b)
#define RETAILMSG(a,b)
#define DEBUGREGISTER(a)
#define VERIFY(a)           a
#endif 


#include <fatapi.h>


#define CloseAPIHandle(h)       CloseHandle(h)
#define CloseFileHandle(pfh)    CloseHandle(pfh->fh_h)
#define CloseFindHandle(psh)    CloseHandle(psh->sh_h)
#define FAT_CloseFileHandle(h)  CloseHandle(h)
#define FAT_CloseFindHandle(h)  CloseHandle(h)


#ifdef DEBUG
#ifdef UNDER_CE
#define OWNCRITICALSECTION(cs)  ((cs)->LockCount > 0 && (DWORD)(cs)->OwnerThread == GetCurrentThreadId())
#else
#define OWNCRITICALSECTION(cs)  TRUE    #endif
#else
#define OWNCRITICALSECTION(cs)  TRUE
#endif


typedef struct _DLINK DLINK, *PDLINK;
typedef struct _BUF BUF, *PBUF;
typedef struct _DSK DSK, *PDSK;
typedef struct _CACHE CACHE, *PCACHE;
typedef struct _VOLUME VOLUME, *PVOLUME;
typedef struct _DSTREAM DSTREAM, *PDSTREAM;
typedef struct _FHANDLE FHANDLE, *PFHANDLE;
typedef struct _SHANDLE SHANDLE, *PSHANDLE;

#define FS_DECL(type, api, args) extern type FAT_ ## api args
#define FS_HANDLE PVOLUME pvol

#include <extfile.h>

#ifdef FATUI
#include <fatui.h>
#endif

#include "fatfmt.h"
#include "dosbpb.h"
#include "bootsec.h"
#include "streamrun.h"

/*  Doubly linked lists:
 *
 *  Should be the first element of structure being linked.  It may be used
 *  as the head of a list anywhere in a structure which contains the list.
 *
 *  NOTE: the multiple definitions of the basic DLINK structure are here
 *  simply to provide additional information to the debugger regarding what
 *  kind of structure each link in a particular DLINK points to.
 */

struct _DLINK {
    PDLINK      next;           // ptr to next item in list
    PDLINK      prev;           // ptr to previous item in list
};

typedef struct _BUF_DLINK {
    PBUF        pbufNext;       // ptr to next item in list
    PBUF        pbufPrev;       // ptr to previous item in list
} BUF_DLINK, *PBUF_DLINK;

typedef struct _DSK_DLINK {
    PDSK        pdskNext;       // ptr to next item in list
    PDSK        pdskPrev;       // ptr to previous item in list
} DSK_DLINK, *PDSK_DLINK;

typedef struct _CCH_DLINK {
    PCACHE      pcchNext;       // ptr to next item in list
    PCACHE      pcchPrev;       // ptr to previous item in list
} CCH_DLINK, *PCCH_DLINK;

typedef struct _VOL_DLINK {
    PVOLUME     pvolNext;       // ptr to next item in list
    PVOLUME     pvolPrev;       // ptr to previous item in list
} VOL_DLINK, *PVOL_DLINK;

typedef struct _STM_DLINK {
    PDSTREAM    pstmNext;       // ptr to next item in list
    PDSTREAM    pstmPrev;       // ptr to previous item in list
} STM_DLINK, *PSTM_DLINK;

typedef struct _FH_DLINK {
    PFHANDLE    pfhNext;        // ptr to next item in list
    PFHANDLE    pfhPrev;        // ptr to previous item in list
} FH_DLINK, *PFH_DLINK;

typedef struct _SH_DLINK {
    PSHANDLE    pshNext;        // ptr to next item in list
    PSHANDLE    pshPrev;        // ptr to previous item in list
} SH_DLINK, *PSH_DLINK;


/*  Global flags
 */
#define FATFS_UPDATE_ACCESS         0x00000001  // update access times if set
#define FATFS_DISABLE_LOG           0x00000002  // disable event logging if set
#define FATFS_DISABLE_AUTOSCAN      0x00000004  // disable automatic ScanVolume()
#define FATFS_VERIFY_WRITES         0x00000008  // verify all writes (as opposed to a handful)
#define FATFS_ENABLE_BACKUP_FAT     0x00000010  // add a backup FAT to all formats
#define FATFS_FORCE_WRITETHROUGH    0x00000020  // Force fat to be always writethrough
#define FATFS_DISABLE_AUTOFORMAT    0x00000040  // disable automatic formatting of unformatted volumes

#define FATFS_WFWS_NOWRITETHRU      0x00010000  // disable writethrough on WriteFileWithSeek API, improve memory-mapped file performance
#define FATFS_DISABLE_FORMAT        0x00020000  // disable format
#define FATFS_TRANS_DATA            0x00040000  // transact data on a write (i.e. clone cluster on every write)
#define FATFS_TFAT_NONATOMIC_SECTOR 0x00080000  // Use cluster 1 entry in FAT table for TFAT transaction, since sector writes are non-atomic.
												// By default, TFAT uses the NOF field of the boot sector
#define FATFS_DISABLE_TFAT_REDIR    0x00100000  // Indicates to disable redirect the root directory to another hidden director
                                                                                   // for FAT12 or 16, since root dir isn't transacted in those cases
#define FATFS_TFAT_ALWAYS           0x00200000  // Always mark transaction status, even only one sector in FAT is changed
#define FATFS_FORCE_TFAT            0x00400000  // Force TFAT transactioning even if volume isn't formatted as TFAT
#define FATFS_LFN_EXTENDED          0x00800000  // Generate LFN entries for extended characters always
#define FATFS_TFAT_DISABLE_MOVEDIR  0x01000000  // Disable MoveFile on a directory for TFAT because it isn't transaction-safe

#ifdef TFAT
#define FATFS_REGISTRY_FLAGS        (FATFS_UPDATE_ACCESS |      \
                                     FATFS_DISABLE_LOG |        \
                                     FATFS_DISABLE_AUTOSCAN |   \
                                     FATFS_VERIFY_WRITES |      \
                                     FATFS_ENABLE_BACKUP_FAT |  \
                                     FATFS_FORCE_WRITETHROUGH | \
                                     FATFS_DISABLE_AUTOFORMAT | \
                                     FATFS_DISABLE_FORMAT | \
                                     FATFS_TFAT_ALWAYS)
#else
#define FATFS_REGISTRY_FLAGS        (FATFS_UPDATE_ACCESS |      \
                                     FATFS_DISABLE_LOG |        \
                                     FATFS_DISABLE_AUTOSCAN |   \
                                     FATFS_VERIFY_WRITES |      \
                                     FATFS_ENABLE_BACKUP_FAT |  \
                                     FATFS_FORCE_WRITETHROUGH | \
                                     FATFS_DISABLE_AUTOFORMAT | \
                                     FATFS_TFAT_ALWAYS)
#endif


/*  Buffer structure:
 *
 *  This structure describes a buffer of disk data.
 */

// values for b_flags:
#define BUF_UNCERTAIN           0x02    // buffer is in transition (ie, is being read)
#define BUF_BUSY                0x04    #define BUF_INVALID            0x08
#define BUF_FREE                0x10    // buffer is free to assign
#define BUF_ERROR               0x40    // buffer is uncommitable (currently also implies dirty)
#define BUF_DIRTY               0x80    // buffer is dirty

// values for b_blk:
#define INVALID_BLOCK           0xFFFFFFFF

struct _BUF {
    BUF_DLINK   b_dlink;        // preferred location for dlinks (at offset 0)
    PVOLUME     b_pvol;         // pointer to VOLUME buffer belongs to, if any
    DWORD       b_blk;          // block #
    PBYTE       b_pdata;        // pointer to disk data
    PDSTREAM    b_pstm;         // pointer to stream holding this buffer, if any
    DWORD       b_hold;         // non-zero if buffer is being held
    BYTE        b_flags;        // eg, BUF_DIRTY
#ifdef DEBUG
    DWORD       b_refs;         // usage count for this buffer (DEBUG only)
    BYTE        b_achName[OEMNAMESIZE+1];
#endif
};


/*  Disk structure:
 *
 *  This structure describes a disk device, which has one or more VOLUMEs
 *  associated with it.
 */

#ifdef  UNDER_CE
#define MAX_DISK_PATH           16
#else
#define MAX_DISK_PATH           MAX_PATH    // enough room for a fully-qualified disk image filename
#endif

// values for d_flags:
#define DSKF_NONE               0x00000000
#define DSKF_FROZEN             0x00000004  // disk has been frozen (but not freed)
#define DSKF_REMOUNTED          0x00000008  // disk has been remounted
#define DSKF_RECYCLED           0x00000010  // disk has been recycled (like remounted but worse)
#define DSKF_READONLY           0x00080000  // disk is read-only (eg, write-protected)
#define DSKF_SENDDELETE         0x00100000  // disk driver needs to be sent IOCTL_DISK_DELETE_SECTOR

// private flags in DISK_INFO.di_flags (reserved for use by FATFS)
#define DISK_INFO_FLAGS_FATFS_RESERVED      0xf0000000
#define DISK_INFO_FLAGS_FATFS_SIMULATED     0x10000000
#define DISK_INFO_FLAGS_FATFS_NEW_IOCTLS    0x80000000

struct _DSK {
    DSK_DLINK   d_dlOpenDisks;          // list of open disks in system
    PVOLUME     pVol;                   // Points to the volume that is mounted
    DWORD       d_csecUnused;           // largest contiguous chunk of unpartitioned space (in sectors)
    DWORD       d_csecTotalUnused;      // total unpartitioned space (in sectors)
    HANDLE      d_hdsk;                 // device driver handle to read/write disk
    DWORD       d_flags;                // see DSKF_*
    DISK_INFO   d_diActive;             // active drive geometry for disk
    DWORD       d_cwName;               // actual number of characters allocated in d_wsName (including NULL)
    WCHAR       d_wsName[MAX_PATH];     // name of disk device
};


/*  Cache structure:
 *
 *  This structure describes a cache entry.  Entries are linked onto a
 *  volume's cache chain.  The volume's cache critical section should be taken
 *  whenever an entry is created, destroyed, or searched on that volume's cache
 *  chain.
 *
 *  Currently, there is only one kind of entry: CACHE_PATH.  When an entry
 *  is created, an additional ref count is applied to the stream corresponding
 *  to that path;  similarly, that stream's ref count is reduced when the cache
 *  entry is destroyed (or reused).
 *
 *  Like SHANDLEs, when a CACHE structure is allocated, c_awcPath is not really
 *  MAX_PATH WCHARs big.  It is allocated only to the length stored in c_cwPath.
 */

#define MAX_CACHE_PER_VOLUME    50     // max cache entries per volume

#define FAT_CACHE_SECTORS       2       // number of cache FAT sectors

// values for c_flags:
#define CACHE_PATH              0x01    // path cache entry

struct _CACHE {
    CCH_DLINK   c_dlink;        // preferred location for dlinks (at offset 0)
    PDSTREAM    c_pstm;         // pointer to stream
    BYTE        c_flags;        // see CACHE_*
    BYTE        c_reserved;     // not used (for padding only)
    WORD        c_cwPath;       // # characters in c_awcPath (includes room for NULL)
#ifdef DEBUG
    DWORD       c_cbAlloc;      // used to track size of this allocation only
#endif
    WCHAR       c_awcPath[MAX_PATH];
};


/*  File system volume structure:
 *
 *  This structure is used by the file system to hold specific volume
 *  information. E.G.: volume size, block to sector conversions, size of the
 *  FAT, the root directory file, etc.
 */

#define MAX_VOLUMES             99

// values for v_flags:
#define VOLF_NONE               0x00000000
#define VOLF_INVALID            0x00000001      // volume is invalid (eg, unformatted)
#define VOLF_UNMOUNTED          0x00000002      // volume has been unmounted
#define VOLF_FROZEN             DSKF_FROZEN     // volume has been frozen (but not freed)
#define VOLF_REMOUNTED          DSKF_REMOUNTED  // volume has been remounted
#define VOLF_RECYCLED           DSKF_RECYCLED   // volume has been recycled (like remounted but worse)
#define VOLF_READLOCKED         0x00000020      // volume has been locked for read access (can't be written by others)
#define VOLF_WRITELOCKED        0x00000040      // volume has been locked for write access (can't be read *or* written by others)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级日本三级少妇99| 久久国产精品色| 色综合色狠狠天天综合色| 中文一区二区在线观看| 国产乱理伦片在线观看夜一区| 日韩视频中午一区| 久久av中文字幕片| 久久人人超碰精品| 国产成人亚洲综合a∨婷婷| 中文av字幕一区| 91麻豆国产福利在线观看| 亚洲欧美另类小说| 欧美男女性生活在线直播观看| 蜜芽一区二区三区| 久久综合狠狠综合久久综合88| 国产成人8x视频一区二区| 亚洲色图在线看| 91精品欧美福利在线观看| 老司机精品视频导航| 亚洲国产经典视频| 欧亚洲嫩模精品一区三区| 毛片av一区二区| 国产精品乱码一区二区三区软件| 欧美在线不卡视频| 麻豆精品国产传媒mv男同| 中文字幕+乱码+中文字幕一区| 色婷婷综合在线| 久久99精品久久久久久久久久久久| 久久影院电视剧免费观看| 一本一本大道香蕉久在线精品| 日韩电影在线观看一区| 国产偷国产偷亚洲高清人白洁| 91黄色免费版| 国产精品白丝jk白祙喷水网站| 亚洲宅男天堂在线观看无病毒| 日韩欧美久久久| 91免费在线播放| 久久av中文字幕片| 亚洲乱码国产乱码精品精的特点| 欧美大片一区二区| 色综合婷婷久久| 激情久久五月天| 一区二区免费看| 日本一区二区不卡视频| 欧美丰满少妇xxxxx高潮对白| 成人美女视频在线观看18| 免费欧美在线视频| 国产精品女人毛片| 精品播放一区二区| 欧美乱熟臀69xxxxxx| 不卡的av在线播放| 国产一区二区三区高清播放| 日韩精品一二三区| 亚洲美腿欧美偷拍| 国产三级欧美三级日产三级99| 色综合欧美在线| 国产成人自拍高清视频在线免费播放| 香蕉久久夜色精品国产使用方法| 国产精品大尺度| 国产女人水真多18毛片18精品视频| 3d动漫精品啪啪1区2区免费| 欧美性猛交xxxxxxxx| 国产sm精品调教视频网站| 狠狠色丁香九九婷婷综合五月| 亚洲大片免费看| 亚洲午夜三级在线| 亚洲欧洲国产日韩| 中文字幕第一区| 久久久精品tv| 精品国产a毛片| 日韩欧美电影一区| 91精品国产高清一区二区三区| 欧美在线一区二区三区| 日本丶国产丶欧美色综合| 99re这里只有精品视频首页| 成人av午夜电影| 成人免费观看av| 成人激情动漫在线观看| 成a人片亚洲日本久久| 国产 日韩 欧美大片| 福利电影一区二区| 国产91在线观看| 成人av资源网站| 91免费国产在线| 色噜噜夜夜夜综合网| 91精品婷婷国产综合久久性色 | 色8久久精品久久久久久蜜| 成人中文字幕合集| 成人av在线播放网址| gogo大胆日本视频一区| av不卡免费在线观看| 色综合网站在线| 欧美性大战久久久久久久蜜臀| 欧美日韩免费观看一区三区| 欧美一级日韩免费不卡| 精品久久久久久久久久久久久久久| 久久网站最新地址| 日本一二三不卡| 亚洲精品久久久蜜桃| 亚洲线精品一区二区三区八戒| 亚洲成a人v欧美综合天堂下载 | 欧美r级电影在线观看| 2020国产精品| 国产精品夫妻自拍| 亚洲尤物视频在线| 日本视频在线一区| 国产在线精品一区在线观看麻豆| 粉嫩欧美一区二区三区高清影视| 99热99精品| 666欧美在线视频| 久久久久国产精品人| 亚洲欧美日韩精品久久久久| 亚洲超碰精品一区二区| 狠狠狠色丁香婷婷综合久久五月| 99久久综合99久久综合网站| 欧美揉bbbbb揉bbbbb| 久久毛片高清国产| 艳妇臀荡乳欲伦亚洲一区| 日本成人在线不卡视频| 成人国产在线观看| 51精品秘密在线观看| 中文字幕av一区二区三区高| 午夜激情一区二区三区| 国产激情偷乱视频一区二区三区| 欧美中文字幕一区二区三区| 日韩欧美成人激情| 亚洲狼人国产精品| 激情伊人五月天久久综合| 色婷婷av一区二区三区gif | 6080日韩午夜伦伦午夜伦| 久久人人爽爽爽人久久久| 性做久久久久久久免费看| 国产69精品久久久久毛片| 欧美日韩一区二区三区免费看| 久久久久久久久久电影| 亚洲国产精品久久久久秋霞影院 | 麻豆传媒一区二区三区| 成人av电影观看| 日韩视频在线永久播放| 一区二区三区 在线观看视频| 久久99国产精品久久| 欧美伊人精品成人久久综合97| 国产日韩影视精品| 奇米精品一区二区三区四区| 91传媒视频在线播放| 久久九九全国免费| 美女一区二区三区在线观看| 在线观看免费亚洲| 欧美激情一区二区三区蜜桃视频 | 国产精品乱人伦| 精品一二线国产| 91精品免费在线观看| 亚洲国产成人精品视频| 99在线精品观看| 中文在线一区二区| 国产不卡视频在线播放| 日韩欧美三级在线| 日本一道高清亚洲日美韩| 欧美色图激情小说| 一区二区三区四区不卡视频| 成人app下载| 国产精品美女久久久久久久久久久 | 国产日韩欧美精品在线| 日韩精品乱码免费| 欧美亚洲另类激情小说| 自拍偷在线精品自拍偷无码专区| 福利视频网站一区二区三区| 欧美国产综合色视频| 国产一区二区不卡老阿姨| 欧美精品一区二区三区四区| 国模套图日韩精品一区二区| 日韩欧美一区中文| 久久国产乱子精品免费女| 日韩精品一区二区三区在线播放| 开心九九激情九九欧美日韩精美视频电影 | 欧美一区二区啪啪| 奇米影视7777精品一区二区| 日韩一级黄色片| 国产一区二区在线看| 国产午夜一区二区三区| 成人看片黄a免费看在线| 亚洲人成网站影音先锋播放| 欧美中文一区二区三区| 亚洲成人av资源| 日韩精品一区二区三区在线播放| 国产精品自拍av| 国产精品久久午夜夜伦鲁鲁| 99re这里只有精品6| 亚洲一区在线电影| 91精品国产综合久久久久久漫画 | 亚洲国产综合色| 欧美一级在线免费| 国产一区不卡视频| 日韩美女精品在线| 欧美三级中文字幕| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久久久久久综合日本| 欧美人狂配大交3d怪物一区| 久久超级碰视频| 亚洲欧美综合网|