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

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

?? apis.c

?? wince下的源代碼集合打包
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*++Copyright (c) 1997-2000 Microsoft Corporation.  All rights reserved.Module Name:    apis.cAbstract:    This file contains the FSDMGR entry points for all supported file    system APIs.--*/#define KEEP_SYSCALLS           // for kernel.h only#define NO_DEFINE_KCALL         // for kernel.h only#include "kernel.h"#include "fsdmgrp.h"#define KERNELCALLSTACK(pcstk)  (((DWORD)(pcstk)->retAddr & 0xf0000000) == 0x80000000)/*  FSDMGR_SystemCanDeadlock - Determine if caller is kernel * *  ENTRY *      pvol -> VOL structure * *  EXIT *      TRUE if caller is kernel, FALSE if not * *  NOTES *      We need this special power-down test before calling FSDMGR_Enter so *      that if/when the loader tries to open PCMCIA drivers before we have *      received the FSNOTIFY_DEVICES_ON notification, we will fail the *      call instead of blocking it. */BOOL FSDMGR_SystemCanDeadlock(PVOL pVol){    // If we're in a "shutdown" state, meaning all calls to FATEnter will    // block until FSNOTIFY_DEVICES_ON is issued, then we need to make this    // check in a few key places (ie, where the kernel may call us) in order    // to prevent a deadlock.//#if 0    PTHREAD pth;    PCALLSTACK pcstk;    if (!(pVol->dwFlags & VOL_POWERDOWN))        return FALSE;    pth = ((PHDATA)((GetCurrentThreadId() & HANDLE_ADDRESS_MASK) + 0x80000000))->pvObj;    if (pcstk = pth->pcstkTop) {        if (KERNELCALLSTACK(pcstk) || (pcstk = pcstk->pcstkNext) && KERNELCALLSTACK(pcstk)) {            SetLastError(ERROR_ACCESS_DENIED);            return TRUE;        }    }//#endif    return FALSE;}/*  FSDMGR_Enter - Tracks (and potentially blocks) threads entering an FSD * *  ENTRY *      pVol -> VOL structure * *  EXIT *      None * *  NOTES *      It's not strictly necessary to keep track of threads entering *      an FSD on a per-volume basis, or to block them on such a basis -- *      these functions could just as easily perform their task using globals. */ void FSDMGR_Enter(PVOL pVol){    ASSERT(VALIDSIG(pVol, VOL_SIG));    if (pVol->dwFlags & VOL_POWERDOWN)        WaitForSingleObject(pVol->hevPowerUp, INFINITE);    InterlockedIncrement(&pVol->cThreads);}/*  FSDMGR_Exit - Tracks threads leaving an FSD (and can signal when the last one leaves) * *  ENTRY *      pVol -> VOL structure * *  EXIT *      None * *  NOTES *      See FSDMGR_Enter for notes. */void FSDMGR_Exit(PVOL pVol){    ASSERT(VALIDSIG(pVol, VOL_SIG));    if (InterlockedDecrement(&pVol->cThreads) == 0) {        if (pVol->dwFlags & VOL_POWERDOWN)            SetEvent(pVol->hevPowerDown);    }}/*  FSDMGR_CloseVolume - Called when a volume is being deregistered * *  ENTRY *      pVol -> VOL structure * *  EXIT *      Always returns TRUE (that's what OUR stub always does, and it's *      expected that that's what FSDs will do too, if they even care to hook *      this entry point). */BOOL FSDMGR_CloseVolume(PVOL pVol){    return pVol->pDsk->pFSD->apfnAFS[AFSAPI_CLOSEVOLUME](pVol->dwVolData);}/*  FSDMGR_CreateDirectoryW - Create a new subdirectory * *  ENTRY *      pVol -> VOL structure *      pwsPathName - pointer to name of new subdirectory *      pSecurityAttributes - pointer to security attributes (ignored) * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) */BOOL FSDMGR_CreateDirectoryW(PVOL pVol, PCWSTR pwsPathName, PSECURITY_ATTRIBUTES pSecurityAttributes){    BOOL f;    FSDMGR_Enter(pVol);    f = pVol->pDsk->pFSD->apfnAFS[AFSAPI_CREATEDIRECTORYW](pVol->dwVolData, pwsPathName, pSecurityAttributes);    FSDMGR_Exit(pVol);    return f;}/*  FSDMGR_RemoveDirectoryW - Destroy an existing subdirectory * *  ENTRY *      pVol -> VOL structure *      pwsPathName - pointer to name of existing subdirectory * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) */BOOL FSDMGR_RemoveDirectoryW(PVOL pVol, PCWSTR pwsPathName){    BOOL f;    FSDMGR_Enter(pVol);    f = pVol->pDsk->pFSD->apfnAFS[AFSAPI_REMOVEDIRECTORYW](pVol->dwVolData, pwsPathName);    FSDMGR_Exit(pVol);    return f;}/*  FSDMGR_GetFileAttributesW - Get file/subdirectory attributes * *  ENTRY *      pVol -> VOL structure *      pwsFileName - pointer to name of existing file/subdirectory * *  EXIT *      Attributes of file/subdirectory if it exists, 0xFFFFFFFF if it *      does not (call GetLastError for error code). */DWORD FSDMGR_GetFileAttributesW(PVOL pVol, PCWSTR pwsFileName){    DWORD dw;    FSDMGR_Enter(pVol);    dw = pVol->pDsk->pFSD->apfnAFS[AFSAPI_GETFILEATTRIBUTESW](pVol->dwVolData, pwsFileName);    FSDMGR_Exit(pVol);    return dw;}/*  FSDMGR_SetFileAttributesW - Set file/subdirectory attributes * *  ENTRY *      pVol -> VOL structure *      pwsFileName - pointer to name of existing file/subdirectory *      dwAttributes - new attributes for file/subdirectory * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) */BOOL FSDMGR_SetFileAttributesW(PVOL pVol, PCWSTR pwsFileName, DWORD dwAttributes){    BOOL f;    FSDMGR_Enter(pVol);    f = pVol->pDsk->pFSD->apfnAFS[AFSAPI_SETFILEATTRIBUTESW](pVol->dwVolData, pwsFileName, dwAttributes);    FSDMGR_Exit(pVol);    return f;}/*  FSDMGR_DeleteFileW - Delete file * *  ENTRY *      pVol -> VOL structure *      pwsFileName - pointer to name of existing file * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) * *  NOTES *      A file marked FILE_ATTRIBUTE_READONLY cannot be deleted.  You have to *      remove that attribute first, with SetFileAttributes. * *      An open file cannot be deleted.  All open handles must be closed first. * *      A subdirectory cannot be deleted with this call either.  You have to *      use RemoveDirectory instead. */BOOL FSDMGR_DeleteFileW(PVOL pVol, PCWSTR pwsFileName){    BOOL f;    FSDMGR_Enter(pVol);    f = pVol->pDsk->pFSD->apfnAFS[AFSAPI_DELETEFILEW](pVol->dwVolData, pwsFileName);    FSDMGR_Exit(pVol);    return f;}/*  FSDMGR_MoveFileW * *  ENTRY *      pVol -> VOL structure *      pwsOldFileName - pointer to name of existing file *      pwsNewFileName - pointer to new name for file * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) * *  NOTES *      We call FindFirst once to obtain the source directory stream for the *      for the existing file, and if it really exists, we call FindFirst *      again to obtain the destination directory stream for the new file, *      verifying that the new name does NOT exist.  Then we create the new *      name and destroy the old. * *      When moving a directory, we must make sure that our traversal *      of the destination path does not cross the source directory, otherwise *      we will end up creating a circular directory chain. */BOOL FSDMGR_MoveFileW(PVOL pVol, PCWSTR pwsOldFileName, PCWSTR pwsNewFileName){    BOOL f;    FSDMGR_Enter(pVol);    f = pVol->pDsk->pFSD->apfnAFS[AFSAPI_MOVEFILEW](pVol->dwVolData, pwsOldFileName, pwsNewFileName);    FSDMGR_Exit(pVol);    return f;}/*  FSDMGR_DeleteAndRenameFileW * *  ENTRY *      pVol -> VOL structure *      pwsOldFileName - pointer to name of existing file *      pwsNewFileName - pointer to name of file to be renamed to existing file * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) */BOOL FSDMGR_DeleteAndRenameFileW(PVOL pVol, PCWSTR pwsOldFileName, PCWSTR pwsNewFileName){    BOOL f;    FSDMGR_Enter(pVol);    f = pVol->pDsk->pFSD->apfnAFS[AFSAPI_PRESTOCHANGOFILENAME](pVol->dwVolData, pwsOldFileName, pwsNewFileName);    FSDMGR_Exit(pVol);    return f;}/*  FSDMGR_GetFreeDiskSpaceW * *  ENTRY *      pVol -> VOL structure *      pwsPathName -> volume name (eg, "\Storage Card") *      pSectorsPerCluster -> DWORD to receive sectors/cluster *      pBytesPerSector -> DWORD to receive bytes/sector *      pFreeClusters -> DWORD to receive available clusters on volume *      pClusters -> DWORD to receive total clusters on volume * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) */BOOL FSDMGR_GetDiskFreeSpaceW(PVOL pVol, PCWSTR pwsPathName, PDWORD pSectorsPerCluster, PDWORD pBytesPerSector, PDWORD pFreeClusters, PDWORD pClusters){    BOOL f;    FSDMGR_Enter(pVol);    f = pVol->pDsk->pFSD->apfnAFS[AFSAPI_GETDISKFREESPACE](pVol->dwVolData, pwsPathName, pSectorsPerCluster, pBytesPerSector, pFreeClusters, pClusters);    FSDMGR_Exit(pVol);    return f;}/*  FSDMGR_CloseAllFiles (no FSD equivalent) * *  ENTRY *      pVol -> VOL structure *      hProc == handle of terminating process * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) */BOOL FSDMGR_CloseAllFiles(PVOL pVol, HANDLE hProc){    PHDL pHdl;    FSDMGR_Enter(pVol);loop1:    pHdl = pVol->dlHdlList.pHdlNext;    while (pHdl != (PHDL)&pVol->dlHdlList) {        if (pHdl->hProc == hProc) {            SetHandleOwner(pHdl->h, GetCurrentProcess());            if (CloseHandle(pHdl->h))                goto loop1;     // handle was freed, state of our list has changed        }        pHdl = pHdl->dlHdl.pHdlNext;    }    FSDMGR_Exit(pVol);    return TRUE;}/*  FSDMGR_CommitAllFiles (no FSD equivalent) * *  ENTRY *      pVol -> VOL structure * *  EXIT *      TRUE if successful, FALSE if not (call GetLastError for error code) */BOOL FSDMGR_CommitAllFiles(PVOL pVol){    PHDL pHdl;    // There ain't no steenkin' FSDMGR_Enter/FSDMGR_Exit calls in this function    // because it's called during FSNOTIFY_POWER_OFF and we don't want to hang ourselves.    pHdl = pVol->dlHdlList.pHdlNext;    while (pHdl != (PHDL)&pVol->dlHdlList) {        pHdl->pVol->pDsk->pFSD->apfnFile[FILEAPI_FLUSHFILEBUFFERS](pHdl->dwHdlData);        pHdl = pHdl->dlHdl.pHdlNext;    }    return TRUE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲一区二区三区| 麻豆久久一区二区| 久久久亚洲国产美女国产盗摄 | 日本欧美一区二区三区| 亚洲人成人一区二区在线观看| 久久久蜜桃精品| 亚洲精品一区二区三区99| 欧美激情中文不卡| 国产喂奶挤奶一区二区三区| 久久精品无码一区二区三区| 久久久.com| 国产精品护士白丝一区av| 中文字幕免费在线观看视频一区| 国产亚洲精久久久久久| 国产精品入口麻豆原神| 亚洲欧洲av一区二区三区久久| 国产成人亚洲综合a∨婷婷 | 日本视频一区二区| 午夜精品久久久久久久久| 婷婷久久综合九色国产成人| 日本不卡在线视频| 蜜臀精品久久久久久蜜臀| 国产乱一区二区| 国产精品99久久久久久久女警 | 国产高清亚洲一区| 99久久婷婷国产精品综合| 成人美女视频在线观看18| 99精品视频在线观看免费| 91在线云播放| 欧美性猛片xxxx免费看久爱| 欧美一区二区三区免费视频 | 国产精品久久毛片av大全日韩| 亚洲天堂成人网| 亚洲成人综合网站| 亚洲一级片在线观看| 蜜臂av日日欢夜夜爽一区| 成人午夜激情视频| 欧美日韩国产色站一区二区三区| 精品国产麻豆免费人成网站| 国产精品三级久久久久三级| 伦理电影国产精品| 国产99久久久久| 欧美日韩一区视频| 久久久一区二区| 午夜影院在线观看欧美| 国产成人精品影院| 91.成人天堂一区| 欧美国产1区2区| 无吗不卡中文字幕| 91小视频在线免费看| 日韩欧美亚洲国产另类| 亚洲精品日日夜夜| 九九精品视频在线看| 在线观看www91| 国产日韩欧美不卡| 美国一区二区三区在线播放| 色综合中文综合网| 国产精品亚洲午夜一区二区三区| 日本韩国欧美一区| 国产午夜亚洲精品羞羞网站| 国v精品久久久网| 日韩欧美高清在线| 亚洲福利国产精品| 91视频一区二区| 中文字幕精品在线不卡| 精品一区二区在线播放| 在线不卡一区二区| 亚洲综合男人的天堂| av在线不卡电影| 日本一区二区三区四区在线视频 | 国产精品免费av| 国精产品一区一区三区mba桃花 | 蜜桃精品视频在线观看| 欧美天堂亚洲电影院在线播放| 亚洲视频1区2区| 成人av资源在线观看| 国产欧美日韩另类视频免费观看| 精品在线播放午夜| 精品国产露脸精彩对白| 蜜臀av一区二区在线免费观看| 在线观看91av| 视频在线观看一区| 欧美一区二区高清| 蜜桃av一区二区在线观看| 日韩欧美亚洲国产精品字幕久久久 | 在线观看区一区二| 亚洲一区二区三区影院| 欧美日韩一区二区三区在线| 丝袜美腿高跟呻吟高潮一区| 欧美久久久久久久久| 亚洲成av人**亚洲成av**| 欧美色网站导航| 亚洲观看高清完整版在线观看| 欧美日韩另类一区| 免费日韩伦理电影| 久久久久久久综合色一本| 国产精品自拍一区| 亚洲视频综合在线| 欧美性大战久久久| 麻豆成人综合网| 欧美激情一区二区三区蜜桃视频| 99久久精品99国产精品| 亚洲综合男人的天堂| 日韩女优av电影在线观看| 久久97超碰色| 亚洲视频一二三区| 欧美精品一区二区三区久久久| 国产一区视频网站| 最新国产成人在线观看| 6080国产精品一区二区| 国产在线不卡一区| 一区二区三区在线看| 欧美一二区视频| 不卡一卡二卡三乱码免费网站| 亚洲已满18点击进入久久| 日韩亚洲欧美高清| 91亚洲精品久久久蜜桃| 麻豆国产精品官网| 亚洲少妇30p| 精品日韩一区二区| 日韩黄色免费网站| 国产精品成人一区二区艾草| 日韩一区二区三区精品视频| 波多野结衣91| 蜜乳av一区二区| 亚洲综合丁香婷婷六月香| 国产亚洲精品久| 欧美一二三区在线观看| 欧美性一级生活| 国产成人av在线影院| 日韩av一二三| 亚洲一区在线视频| 中文字幕一区二区三区视频| 日韩免费视频一区| 欧美色窝79yyyycom| 9i看片成人免费高清| 久久国产人妖系列| 舔着乳尖日韩一区| 亚洲精选在线视频| 中文字幕一区二区三区四区 | 国产欧美日韩另类一区| 日韩女优毛片在线| 538prom精品视频线放| 在线观看日韩一区| 97se狠狠狠综合亚洲狠狠| 国产乱淫av一区二区三区| 青青草成人在线观看| 亚洲第一狼人社区| 亚洲综合激情另类小说区| 亚洲免费在线视频| 最新日韩在线视频| 亚洲在线视频免费观看| 亚洲欧洲国产专区| 国产精品高潮久久久久无| 国产视频一区二区在线观看| 精品盗摄一区二区三区| 精品国产一区二区在线观看| 欧美一三区三区四区免费在线看 | 免费日本视频一区| 午夜国产精品一区| 午夜精彩视频在线观看不卡| 亚洲第一成人在线| 午夜亚洲国产au精品一区二区| 国产精选一区二区三区| 国产99一区视频免费| 国产美女一区二区| 国产精品一区专区| 国产98色在线|日韩| 国产精品一区二区不卡| 国产一区999| 成人黄色在线看| 一本一道久久a久久精品| 在线观看一区二区视频| 欧美日韩dvd在线观看| 制服.丝袜.亚洲.中文.综合| 日韩欧美卡一卡二| 国产亚洲美州欧州综合国| 亚洲色图欧美在线| 亚洲午夜电影在线观看| 日日夜夜一区二区| 国产一区999| 色乱码一区二区三区88| 欧美美女bb生活片| 久久久久一区二区三区四区| 国产精品高潮呻吟| 日韩国产成人精品| 日韩成人午夜电影| 色综合亚洲欧洲| 制服丝袜国产精品| 亚洲国产成人私人影院tom| 亚洲美女免费在线| 久久精品国产精品亚洲红杏| 国产真实乱对白精彩久久| 精品一区二区三区的国产在线播放| 成人的网站免费观看| 欧美浪妇xxxx高跟鞋交| 中文字幕不卡在线观看| 亚洲成人av中文| 岛国精品在线播放| 91精品欧美福利在线观看 |