亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
91精品国产色综合久久不卡电影 | 国产午夜精品久久久久久免费视| 国产欧美日韩卡一| 精品一区二区三区久久| 日韩欧美在线影院| 欧美二区乱c少妇| 国产精品大尺度| 精品一区二区三区在线观看国产| 91在线高清观看| 久久久久久久综合| 人人精品人人爱| 欧美系列在线观看| 国产精品成人免费在线| 国产伦理精品不卡| 欧美一区二区三区小说| 亚洲一区中文日韩| 91蜜桃婷婷狠狠久久综合9色| 久久精品一二三| 久久精品国产澳门| 91精品啪在线观看国产60岁| 亚洲美腿欧美偷拍| 99久久国产综合色|国产精品| 久久九九国产精品| 国产一区二三区好的| 欧美人体做爰大胆视频| 国产99久久久国产精品潘金网站| 亚洲欧洲日产国码二区| 久久久久国产成人精品亚洲午夜| 香蕉av福利精品导航| 91在线一区二区三区| 国产清纯白嫩初高生在线观看91| 久久9热精品视频| 日韩三级视频在线看| 日韩影院免费视频| 7777精品伊人久久久大香线蕉 | 国产乱人伦偷精品视频免下载| 91麻豆精品91久久久久同性| 午夜精品免费在线| 制服视频三区第一页精品| 日韩影院在线观看| 日韩女优电影在线观看| 日本欧美大码aⅴ在线播放| 91精品国产麻豆| 久久精品国产色蜜蜜麻豆| 久久婷婷色综合| 国产sm精品调教视频网站| 国产精品欧美一区二区三区| 成人午夜激情片| 亚洲欧美色一区| 欧美剧在线免费观看网站 | 国产真实乱子伦精品视频| 色综合久久88色综合天天免费| 91国产成人在线| 亚洲一区二区三区影院| 久久天天做天天爱综合色| 韩国理伦片一区二区三区在线播放| 久久影视一区二区| 99精品国产热久久91蜜凸| 亚洲综合区在线| 日韩视频一区在线观看| 国产精品亚洲综合一区在线观看| 国产精品国产a| 欧美日韩一区二区三区在线| 琪琪久久久久日韩精品| 日本一区二区综合亚洲| 色婷婷av一区二区| 老司机免费视频一区二区| 国产精品久久看| 在线成人av网站| 成人的网站免费观看| 亚洲第一成人在线| 国产午夜亚洲精品理论片色戒| 色视频欧美一区二区三区| 麻豆成人久久精品二区三区红| 国产日韩精品一区二区三区| 欧美又粗又大又爽| 国产一区欧美一区| 午夜视频在线观看一区| 婷婷综合另类小说色区| 欧美日韩国产中文| 亚洲风情在线资源站| 91精品国产入口在线| 国产99精品在线观看| 性欧美疯狂xxxxbbbb| 亚洲最大成人综合| 精品国产乱码久久久久久久 | 视频在线观看一区二区三区| 久久久精品黄色| 欧美日韩一区二区在线观看| 成熟亚洲日本毛茸茸凸凹| 秋霞影院一区二区| 亚洲精品午夜久久久| 欧美国产视频在线| 日韩免费在线观看| 欧美性生活一区| 97精品久久久久中文字幕| 国产精品小仙女| 精品一区二区免费| 日韩国产精品久久| 一区二区三国产精华液| 国产精品久久久久三级| 久久精品日产第一区二区三区高清版| 欧美色综合网站| 色婷婷激情综合| 91免费国产视频网站| 成人国产精品免费观看视频| 国产一区二区不卡老阿姨| 秋霞午夜鲁丝一区二区老狼| 亚洲成a人在线观看| 亚洲综合免费观看高清在线观看| 中文字幕一区二区三区不卡| 日韩一级二级三级精品视频| 欧美日本一道本| 免费成人在线观看视频| 亚洲成人免费看| 东方aⅴ免费观看久久av| 久久精工是国产品牌吗| 青青青伊人色综合久久| 日本成人在线网站| 日本少妇一区二区| 日本欧美肥老太交大片| 久久 天天综合| 国产毛片精品一区| 大桥未久av一区二区三区中文| 国产传媒久久文化传媒| 成人丝袜18视频在线观看| 成人精品gif动图一区| jlzzjlzz亚洲女人18| www.色综合.com| 日本久久一区二区三区| 欧美日韩国产影片| 91麻豆精品国产91| 国产亚洲女人久久久久毛片| 国产精品乱人伦一区二区| 亚洲手机成人高清视频| 尤物在线观看一区| 免费在线视频一区| 国产一区二区三区四| aaa国产一区| 欧美日韩精品一区二区天天拍小说 | 日本网站在线观看一区二区三区| 日韩成人免费在线| 国产成人av影院| 91成人在线精品| 亚洲影视在线观看| 天天综合网 天天综合色| 欧美一级爆毛片| 欧美日韩久久久一区| 精品国产伦一区二区三区观看方式 | 亚洲高清免费在线| 欧美中文字幕亚洲一区二区va在线 | 欧美亚洲愉拍一区二区| 日韩一区和二区| 国产精品视频yy9299一区| 一个色在线综合| 美女视频黄频大全不卡视频在线播放| 国产suv一区二区三区88区| 欧美性高清videossexo| 久久伊人中文字幕| 亚洲第一会所有码转帖| 国产三级欧美三级日产三级99| 国产露脸91国语对白| 久久国产视频网| 99久久99精品久久久久久 | 亚洲色图一区二区| 麻豆精品国产传媒mv男同| 91丝袜呻吟高潮美腿白嫩在线观看| 在线电影院国产精品| 日韩美女视频19| 国产在线精品视频| 欧美日本韩国一区| 中文字幕在线播放不卡一区| 精品亚洲成a人| 欧美日韩一级黄| 18欧美亚洲精品| 国产成人av一区二区三区在线观看| 7799精品视频| 亚洲一区二区五区| av电影天堂一区二区在线观看| 精品成人a区在线观看| 婷婷激情综合网| 色婷婷综合久久久久中文一区二区| 久久一日本道色综合| 日本三级韩国三级欧美三级| 欧美视频在线观看一区| 亚洲欧美综合另类在线卡通| 国产高清视频一区| 久久网站热最新地址| 欧美精品久久久久久久多人混战| 亚洲日本韩国一区| 在线精品视频小说1| 26uuuu精品一区二区| 日韩av在线播放中文字幕| 色欧美日韩亚洲| 综合久久给合久久狠狠狠97色| 国产成人在线视频免费播放| 精品国产电影一区二区| 国产曰批免费观看久久久| 久久亚洲影视婷婷| 国产99久久久国产精品|