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

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

?? fatfs.h

?? FAT文件系統源代碼
?? H
?? 第 1 頁 / 共 5 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// This source code is licensed under Microsoft Shared Source License
// Version 1.0 for Windows CE.
// For a copy of the license visit http://go.microsoft.com/fwlink/?LinkId=3223.
//
/*++


Module Name:

    fatfs.h

Abstract:

    This file contains internal definitions for the WINCE FAT file system
    implementation.

    Unlike FILESYS.EXE (WINCE's RAM-based object store), one of FATFS'
    goals is to be as re-entrant as possible, so that while one thread is
    blocked waiting for I/O, other threads can still perform FATFS operations.
    The rationale for this is that I/O can, in terms of CPU cycles, take an
    extremely long time, and many types of calls do not need to perform any
    I/O to complete (usually because the data they need is in the buffer pool).

Revision History:

Compilation options:

    BIG_BUFFERS - Ths enables a preferred buffer size equal to the
    operating system's page size.  Currently, the preferred buffer
    size is equal to the sector size of the media being mounted (just
    like real-mode MS-DOS).  Note that if you enable this option, you
    may uncover some bugs (it hasn't been tested a lot this way).

    DEMAND_PAGING - This enables support for demand-paging and the
    associated services (in v2.0, that was ReadFilePagein;  post-v2.0,
    they are ReadFileWithSeek and WriteFileWithSeek).

    DEMAND_PAGING_DEADLOCKS - This enabled code to deal with some
    dead-lock consequences if/when the kernel called our demand-paging
    functions with a variety of critical sections held.  Unfortunately,
    there were still a number caveats we couldn't really address, but
    post-v2.0, the kernel has stopped holding critical sections across
    demand-paging requests, so this code should be moot now.

    FAT32 - This enables support for FAT32 volumes.

    PATH_CACHING - This enables path-caching code, which remembers up
    to 4 recently-used paths per volume (see MAX_CACHE_PER_VOLUME).  This
    code makes a HUGE difference in certain scenarios (most notably our
    tests that create and destroy large directory structures), and does
    not significantly impact other scenarios.

    SHELL_MESSAGE_NOTIFICATION - This enables RegisterFileSystemNotification.
    The function is always present; this simply determines whether the
    underlying code is present or if the function should always return FALSE.
    v1.x was essentially built with SHELL_MESSAGE_NOTIFICATION defined.

    SHELL_CALLBACK_NOTIFICATION - This enables RegisterFileSystemFunction.
    The function is always present; this simply determines whether the
    underlying code is present or if the function should always return FALSE.
    SHELL_CALLBACK_NOTIFICATION is a new notification mechanism for v2.x.

--*/

#ifndef FATFS_H
#define FATFS_H

#if defined(_DEBUG) && !defined(DEBUG)
#define DEBUG
#endif

#ifndef INCLUDE_FATFS

#include <windows.h>
#include <tchar.h>
#include <fatutil.h>
#include <lockmgrhelp.h> // FSDMGR_OpenFileLockState, FSDMGR_CloseFileLockState

#define FAT32
#define PATH_CACHING

#define HIDDEN_TFAT_ROOT_DIR  TEXT("__TFAT_HIDDEN_ROOT_DIR__")
#define HIDDEN_TFAT_ROOT_DIR_LEN 24

#define IS_REDIR_PATH(pwsPath) \
    !wcsncmp (pwsPath, HIDDEN_TFAT_ROOT_DIR, HIDDEN_TFAT_ROOT_DIR_LEN)    

#define FROZEN_CLUS_CACHE_SIZE  16*1024

#define MAX_FREE_SPACE_CHUNK_SIZE 1024*1024

#define CLUSTERS_PER_LIST_ENTRY 128
#define CLUSTERS_PER_LIST_DWORD_ENTRY (128 * sizeof(DWORD))

#if defined(UNDER_CE)
//
//  Define CE compilation options here instead of in the 'sources' files,
//  to insure component compilation consistency (aka CCC)
//
#define DEMAND_PAGING

#define SHELL_CALLBACK_NOTIFICATION

// #define DEMAND_PAGING_DEADLOCKS

#include <types.h>
#include <fsioctl.h>
#include <pwinbase.h> // MatchesWildcardMask

#else
#include <sys\types.h>

BOOL MatchesWildcardMask(DWORD lenWildcardMask, PCWSTR pchWildcardMask, DWORD lenTarget, PCWSTR pchTarget);
BOOL LockPages(LPVOID lpvAddress, DWORD cbSize, PDWORD pPFNs, int fOptions);
BOOL UnlockPages(LPVOID lpvAddress, DWORD cbSize);
BOOL SetHandleOwner(HANDLE h, HANDLE hProc);

#define LOCKFLAG_WRITE 0
#define LOCKFLAG_READ  0

#define DEBUGZONE
#define ERRORMSG

#include <windbase.h>
#endif

#include <excpt.h>
#include <memory.h>
#include <diskio.h>
#include <fsdmgr.h>

#ifdef PVOLUME
#undef PVOLUME
#endif

//#include <windev.h>
//I'm currently unable to include windev.h (which is where the
//prototype for this function appears to reside) because of the include
//file #define conflicts (DEVICE_TYPE is being multiply-defined in
//apparently different ways), so I'm simply importing the prototype here for now. -JTP
DWORD GetDeviceKeys(LPCTSTR DevName, LPTSTR ActiveKey, LPDWORD lpActiveLen, LPTSTR DriverKey, LPDWORD lpDriverLen);

#define TEXTW(s)                L##s
#define ARRAYSIZE(a)            (sizeof(a)/sizeof(a[0]))
#define DBGPRINTF               NKDbgPrintfW
#define DBGPRINTFW              NKDbgPrintfW
#define DBGSCANF
#define DBGSCANFW
#ifndef CRLF
#define DBGTEXT(fmt)            TEXT(fmt)
#define DBGTEXTW(fmt)           TEXTW(fmt)
#else
#define DBGTEXT(fmt)            TEXT(fmt) TEXT("\r")
#define DBGTEXTW(fmt)           TEXTW(fmt) TEXTW("\r")
#endif
#define DBGTEXTNOCRLF(fmt)      TEXT(fmt)
#define DBGTEXTWNOCRLF(fmt)     TEXTW(fmt)
#define DEBUGMSGW               DEBUGMSG
#ifndef ASSERT
#ifdef UNDER_CE
#define ASSERT(c)               DEBUGCHK(c)
#else
#define ASSERT(c)               1
#endif
#endif
#endif  // !INCLUDE_FATFS


/*  General-purpose macros (that really should be elsewhere)
 */

#ifdef UNDER_CE
#define GetSystemTimeAsFileTime(pft) { \
        SYSTEMTIME st; \
        GetSystemTime(&st); \
        SystemTimeToFileTime(&st, pft); \
}
#endif


#define ENTER_BREAK_SCOPE switch(TRUE) { case TRUE:
#define LEAVE_BREAK_SCOPE }

#define INVALID_PTR             ((PVOID)0xFFFFFFFF)

#ifdef DEBUG
#define DEBUGONLY(s)            s
#define RETAILONLY(s)
#else
#define DEBUGONLY(s)
#define RETAILONLY(s)           s
#endif

#if defined(DEBUG) && defined(UNDER_CE)
#define VERIFYTRUE(c)           DEBUGCHK(c)
#define VERIFYNULL(c)           DEBUGCHK(!(c))
#else
#define VERIFYTRUE(c)           c
#define VERIFYNULL(c)           c
#endif

#if defined(XREF_CPP_FILE)
#define ERRFALSE(exp)
#elif !defined(ERRFALSE)
//  This macro is used to trigger a compile error if exp is false.
//  If exp is false, i.e. 0, then the array is declared with size 0, triggering a compile error.
//  If exp is true, the array is declared correctly.
//  There is no actual array however.  The declaration is extern and the array is never actually referenced.
#define ERRFALSE(exp)           extern char __ERRXX[(exp)!=0]
#endif

#ifdef DEBUG
#define DEBUGALLOC_CS           3       // arbitrary value for tracking InitializeCriticalSection "allocations"
#define DEBUGALLOC_EVENT        5       // arbitrary value for tracking CreateEvent "allocations"
#define DEBUGALLOC_API          7       // arbitrary value for tracking CreateAPISet "allocations"
#define DEBUGALLOC_HANDLE       11      // arbitrary value for tracking CreateFile "allocations"
#define DEBUGALLOC(cb)          { \
        EnterCriticalSection(&csAlloc); \
        cbAlloc += (cb); \
        DEBUGMSG(ZONE_MEM,(DBGTEXT("FATFS!alloc(0x%x)\n"), cb)); \
        LeaveCriticalSection(&csAlloc); \
}
#define DEBUGFREE(cb)           { \
        EnterCriticalSection(&csAlloc); \
        cbAlloc -= (cb); \
        DEBUGMSG(ZONE_MEM,(DBGTEXT("FATFS!free(0x%x)\n"), cb)); \
        LeaveCriticalSection(&csAlloc); \
}
#else
#define DEBUGALLOC(cb)
#define DEBUGFREE(cb)
#endif


/*  Debug-zone stuff
 */

#ifdef DEBUG

#define ZONEID_INIT             0
#define ZONEID_ERRORS           1
#define ZONEID_SHELLMSGS        2
#define ZONEID_TFAT				3
#define ZONEID_MEM              4
#define ZONEID_APIS             5
#define ZONEID_MSGS             6
#define ZONEID_STREAMS          7
#define ZONEID_BUFFERS          8
#define ZONEID_CLUSTERS         9
#define ZONEID_FATIO            10
#define ZONEID_DISKIO           11
#define ZONEID_LOGIO            12
#define ZONEID_READVERIFY       13
#define ZONEID_WRITEVERIFY      14
#define ZONEID_PROMPTS          15

#define ZONEMASK_INIT           (1 << ZONEID_INIT)
#define ZONEMASK_ERRORS         (1 << ZONEID_ERRORS)
#define ZONEMASK_SHELLMSGS      (1 << ZONEID_SHELLMSGS)
#define ZONEMASK_TFAT			(1 << ZONEID_TFAT)
#define ZONEMASK_MEM            (1 << ZONEID_MEM)
#define ZONEMASK_APIS           (1 << ZONEID_APIS)
#define ZONEMASK_MSGS           (1 << ZONEID_MSGS)
#define ZONEMASK_STREAMS        (1 << ZONEID_STREAMS)
#define ZONEMASK_BUFFERS        (1 << ZONEID_BUFFERS)
#define ZONEMASK_CLUSTERS       (1 << ZONEID_CLUSTERS)
#define ZONEMASK_FATIO          (1 << ZONEID_FATIO)
#define ZONEMASK_DISKIO         (1 << ZONEID_DISKIO)
#define ZONEMASK_LOGIO          (1 << ZONEID_LOGIO)
#define ZONEMASK_READVERIFY     (1 << ZONEID_READVERIFY)
#define ZONEMASK_WRITEVERIFY    (1 << ZONEID_WRITEVERIFY)
#define ZONEMASK_PROMPTS        (1 << ZONEID_PROMPTS)

#define ZONE_INIT               DEBUGZONE(ZONEID_INIT)
#define ZONE_ERRORS             DEBUGZONE(ZONEID_ERRORS)
#define ZONE_SHELLMSGS          DEBUGZONE(ZONEID_SHELLMSGS)
#define ZONE_TFAT				DEBUGZONE(ZONEID_TFAT)
#define ZONE_MEM                DEBUGZONE(ZONEID_MEM)
#define ZONE_APIS               DEBUGZONE(ZONEID_APIS)
#define ZONE_MSGS               DEBUGZONE(ZONEID_MSGS)
#define ZONE_STREAMS            DEBUGZONE(ZONEID_STREAMS)
#define ZONE_BUFFERS            DEBUGZONE(ZONEID_BUFFERS)
#define ZONE_CLUSTERS           DEBUGZONE(ZONEID_CLUSTERS)
#define ZONE_FATIO              DEBUGZONE(ZONEID_FATIO)
#define ZONE_DISKIO             DEBUGZONE(ZONEID_DISKIO)
#define ZONE_LOGIO              DEBUGZONE(ZONEID_LOGIO)
#define ZONE_READVERIFY         DEBUGZONE(ZONEID_READVERIFY)
#define ZONE_WRITEVERIFY        DEBUGZONE(ZONEID_WRITEVERIFY)
#define ZONE_PROMPTS            DEBUGZONE(ZONEID_PROMPTS)

#ifndef ZONEMASK_DEFAULT
#define ZONEMASK_DEFAULT        (ZONEMASK_INIT|ZONEMASK_ERRORS|ZONEMASK_SHELLMSGS)
#endif

#define DEBUGBREAK(cond)         if (cond) DebugBreak(); else
#define DEBUGMSGBREAK(cond,msg)  if (cond) {DEBUGMSG(TRUE,msg); DebugBreak();} else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲六月丁香色婷婷综合久久| 韩国av一区二区| 欧美军同video69gay| 日韩精品亚洲专区| 日韩一区二区三区免费看| 国内精品不卡在线| 亚洲国产电影在线观看| 色综合天天综合网国产成人综合天 | 成人黄色综合网站| 亚洲人一二三区| 欧美男女性生活在线直播观看| 日本成人在线网站| 久久免费国产精品| 波多野结衣91| 亚洲国产日韩av| 精品国一区二区三区| 懂色av噜噜一区二区三区av| 一区二区三区不卡视频 | 在线观看国产91| 免费在线观看一区| 国产日韩综合av| 在线影院国内精品| 美日韩一区二区| 国产精品国产三级国产普通话蜜臀| 日本韩国精品在线| 理论片日本一区| 中文字幕一区二区三区在线播放| 精品视频1区2区3区| 精品一区二区三区在线播放视频| 亚洲国产精华液网站w| 欧美日韩你懂得| 国产iv一区二区三区| 一区二区在线免费观看| 欧美videossexotv100| www.日韩av| 日本vs亚洲vs韩国一区三区| 中文字幕第一区二区| 欧美日韩一级视频| 高清久久久久久| 亚洲va韩国va欧美va| 蜜桃av一区二区| 国产精品美女久久久久aⅴ | 久久9热精品视频| 18成人在线视频| 精品国产网站在线观看| 91黄色激情网站| 国产中文字幕一区| 亚洲成年人影院| 欧美国产日韩一二三区| 555夜色666亚洲国产免| av一二三不卡影片| 美女mm1313爽爽久久久蜜臀| 日韩毛片精品高清免费| 精品国产制服丝袜高跟| 一本色道久久综合狠狠躁的推荐 | 国产呦萝稀缺另类资源| 亚洲国产视频a| 国产精品成人一区二区三区夜夜夜 | 欧美日韩国产免费| 成人av免费在线观看| 美女视频免费一区| 亚洲最新在线观看| 欧美激情资源网| 日韩午夜激情av| 欧美色倩网站大全免费| 成人福利视频网站| 国内精品在线播放| 日韩精品一二三区| 亚洲最快最全在线视频| 国产精品高清亚洲| 国产亚洲欧洲997久久综合 | 日本亚洲欧美天堂免费| 中文字幕一区二区三区四区不卡| 精品国产伦一区二区三区观看体验 | 一区二区理论电影在线观看| 欧美国产日本视频| 久久综合色一综合色88| 欧美高清视频www夜色资源网| 色偷偷88欧美精品久久久| 国产99久久精品| 精品亚洲国产成人av制服丝袜| 亚洲高清在线视频| 亚洲精品国产品国语在线app| 国产农村妇女毛片精品久久麻豆 | 欧美一区二区女人| 欧美三级在线播放| 色婷婷国产精品久久包臀| 成人高清免费观看| 国产精品一二三四五| 久久av老司机精品网站导航| 人人精品人人爱| 图片区小说区国产精品视频| 亚洲综合另类小说| 一区二区三区精品视频| 亚洲免费观看高清完整版在线| 国产精品伦理一区二区| 中文字幕高清一区| 欧美经典一区二区| 欧美国产一区二区在线观看| 国产视频一区不卡| 久久久久高清精品| 国产午夜亚洲精品不卡| 久久精品欧美日韩| 国产亚洲精品资源在线26u| 久久综合九色欧美综合狠狠| 日韩欧美美女一区二区三区| 欧美一区二视频| 日韩视频一区二区三区在线播放| 欧美一级国产精品| 日韩一区二区高清| 日韩精品一区二区三区三区免费| 日韩欧美一区在线| 精品国产乱码久久久久久浪潮 | 欧美日韩一区不卡| 欧美剧在线免费观看网站 | 在线亚洲一区观看| 欧美性一二三区| 欧美精品第1页| 欧美一级夜夜爽| 精品少妇一区二区三区视频免付费 | 欧美日韩国产经典色站一区二区三区| 欧美日韩亚洲综合| 91精品欧美久久久久久动漫| 日韩一级片在线播放| 精品国产一区二区三区忘忧草| www国产精品av| 国产拍欧美日韩视频二区| 中文字幕一区二区视频| 一区二区三区日韩欧美精品| 性做久久久久久久久| 秋霞电影一区二区| 国产资源在线一区| 成人h动漫精品一区二| 色av综合在线| 7777精品久久久大香线蕉 | 久久久蜜桃精品| 亚洲国产精品黑人久久久| 亚洲三级视频在线观看| 亚洲高清免费观看高清完整版在线观看| 丝瓜av网站精品一区二区| 久久成人羞羞网站| 成人黄色大片在线观看| 欧美在线观看视频在线| 日韩视频在线永久播放| 日本一区二区三区免费乱视频| 亚洲图片激情小说| 亚洲va国产天堂va久久en| 黑人巨大精品欧美一区| 97久久精品人人做人人爽| 欧美另类z0zxhd电影| 久久久www成人免费无遮挡大片| 日韩理论片中文av| 日本亚洲三级在线| 成人激情综合网站| 69堂精品视频| 国产日韩成人精品| 亚洲国产精品一区二区久久| 精品亚洲国内自在自线福利| 99精品黄色片免费大全| 日韩亚洲欧美在线观看| 国产精品视频麻豆| 三级欧美韩日大片在线看| 日韩一本二本av| 亚洲欧美在线观看| 另类综合日韩欧美亚洲| 99国产精品视频免费观看| 91精品国产91久久久久久最新毛片| 久久精品视频在线免费观看 | 青青草伊人久久| 丁香天五香天堂综合| 欧美日韩亚州综合| 欧美激情中文不卡| 日韩中文欧美在线| av成人免费在线| 日韩精品中文字幕一区| 亚洲欧美激情小说另类| 国产主播一区二区三区| 精品视频在线免费观看| 国产欧美1区2区3区| 日韩成人一级片| 色哟哟国产精品| 久久精品欧美一区二区三区麻豆| 亚洲国产美女搞黄色| 成人网男人的天堂| 91精品国产手机| 一区二区中文字幕在线| 久久疯狂做爰流白浆xx| 欧美三级视频在线播放| 国产精品另类一区| 黄色资源网久久资源365| 欧美性xxxxx极品少妇| 国产精品入口麻豆九色| 看国产成人h片视频| 色婷婷激情一区二区三区| 国产三级精品在线| 人人精品人人爱| 精品视频一区 二区 三区| 最新国产精品久久精品| 国产麻豆精品theporn| 欧美一级欧美三级在线观看|