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

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

?? sparsestream.h

?? Windows核心編程配套書的源代碼請參考原書一起看
?? H
字號:
/******************************************************************************
Module:  SparseStream.h
Notices: Copyright (c) 2000 Jeffrey Richter
******************************************************************************/


#include "..\CmnHdr.h"     /* See Appendix A. */
#include <WinIoCtl.h>


///////////////////////////////////////////////////////////////////////////////


#pragma once


///////////////////////////////////////////////////////////////////////////////


class CSparseStream {
public:
   static BOOL DoesFileSystemSupportSparseStreams(PCTSTR pszVolume);
   static BOOL DoesFileContainAnySparseStreams(PCTSTR pszPathname);

public:
   CSparseStream(HANDLE hstream = INVALID_HANDLE_VALUE) { 
      Initialize(hstream); 
   }

   virtual ~CSparseStream() { }

   void Initialize(HANDLE hstream = INVALID_HANDLE_VALUE) { 
      m_hstream = hstream; 
   }

public:
   operator HANDLE() const { return(m_hstream); }

public:
   BOOL IsStreamSparse() const;
   BOOL MakeSparse();
   BOOL DecommitPortionOfStream(
      __int64 qwFileOffsetStart, __int64 qwFileOffsetEnd);

   FILE_ALLOCATED_RANGE_BUFFER* QueryAllocatedRanges(PDWORD pdwNumEntries);
   BOOL FreeAllocatedRanges(FILE_ALLOCATED_RANGE_BUFFER* pfarb);

private:
   HANDLE m_hstream;

private:
   static BOOL AreFlagsSet(DWORD fdwFlagBits, DWORD fFlagsToCheck) {
      return((fdwFlagBits & fFlagsToCheck) == fFlagsToCheck);
   }
};


///////////////////////////////////////////////////////////////////////////////


inline BOOL CSparseStream::DoesFileSystemSupportSparseStreams(
   PCTSTR pszVolume) {

   DWORD dwFileSystemFlags = 0;
   BOOL fOk = GetVolumeInformation(pszVolume, NULL, 0, NULL, NULL, 
      &dwFileSystemFlags, NULL, 0);
   fOk = fOk && AreFlagsSet(dwFileSystemFlags, FILE_SUPPORTS_SPARSE_FILES);
   return(fOk);
}


///////////////////////////////////////////////////////////////////////////////


inline BOOL CSparseStream::IsStreamSparse() const {

   BY_HANDLE_FILE_INFORMATION bhfi;
   GetFileInformationByHandle(m_hstream, &bhfi);
   return(AreFlagsSet(bhfi.dwFileAttributes, FILE_ATTRIBUTE_SPARSE_FILE));
}


///////////////////////////////////////////////////////////////////////////////


inline BOOL CSparseStream::MakeSparse() {

   DWORD dw;
   return(DeviceIoControl(m_hstream, FSCTL_SET_SPARSE, 
      NULL, 0, NULL, 0, &dw, NULL));
}


///////////////////////////////////////////////////////////////////////////////


inline BOOL CSparseStream::DecommitPortionOfStream(
   __int64 qwOffsetStart, __int64 qwOffsetEnd) {

   // NOTE: This function does not work if this file is memory-mapped.
   DWORD dw;
   FILE_ZERO_DATA_INFORMATION fzdi;
   fzdi.FileOffset.QuadPart = qwOffsetStart;
   fzdi.BeyondFinalZero.QuadPart = qwOffsetEnd + 1;
   return(DeviceIoControl(m_hstream, FSCTL_SET_ZERO_DATA, (PVOID) &fzdi, 
      sizeof(fzdi), NULL, 0, &dw, NULL));
}


///////////////////////////////////////////////////////////////////////////////


inline BOOL CSparseStream::DoesFileContainAnySparseStreams(
   PCTSTR pszPathname) {

   DWORD dw = GetFileAttributes(pszPathname);
   return((dw == 0xfffffff) 
      ? FALSE : AreFlagsSet(dw, FILE_ATTRIBUTE_SPARSE_FILE));
}


///////////////////////////////////////////////////////////////////////////////


inline FILE_ALLOCATED_RANGE_BUFFER* CSparseStream::QueryAllocatedRanges(
   PDWORD pdwNumEntries) {

   FILE_ALLOCATED_RANGE_BUFFER farb;
   farb.FileOffset.QuadPart = 0;
   farb.Length.LowPart = 
      GetFileSize(m_hstream, (PDWORD) &farb.Length.HighPart);

   // There is no way to determine the correct memory block size prior to 
   // attempting to collect this data, so I just picked 100 * sizeof(*pfarb)
   DWORD cb = 100 * sizeof(farb);
   FILE_ALLOCATED_RANGE_BUFFER* pfarb = (FILE_ALLOCATED_RANGE_BUFFER*) 
      HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cb);

   DeviceIoControl(m_hstream, FSCTL_QUERY_ALLOCATED_RANGES,
      &farb, sizeof(farb), pfarb, cb, &cb, NULL);
   *pdwNumEntries = cb / sizeof(*pfarb);
   return(pfarb);
}


///////////////////////////////////////////////////////////////////////////////


inline BOOL CSparseStream::FreeAllocatedRanges(
   FILE_ALLOCATED_RANGE_BUFFER* pfarb) {

   // Free the queue entry's allocated memory
   return(HeapFree(GetProcessHeap(), 0, pfarb));
}


///////////////////////////////// End Of File /////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色噜噜久久综合| 国产成人av影院| 亚洲天堂免费看| 久久精品视频一区二区三区| 欧美本精品男人aⅴ天堂| 91精品国产麻豆| 欧美日韩一级二级| 欧美日韩黄色影视| 91精品国产乱| 精品理论电影在线观看 | 丁香桃色午夜亚洲一区二区三区| 视频一区国产视频| 日本不卡视频一二三区| 久久不见久久见免费视频1| 美国av一区二区| 国产成人在线色| 色婷婷综合视频在线观看| 99国产精品视频免费观看| 91蜜桃网址入口| 在线不卡的av| 精品国产乱码久久| 中文字幕国产一区| 亚洲国产你懂的| 久久精品国产免费看久久精品| 卡一卡二国产精品| 99久久婷婷国产综合精品| 在线视频你懂得一区| 欧美精品 国产精品| 精品国产乱码久久久久久老虎| 久久久99久久| 国产欧美一区二区精品久导航| 久久夜色精品一区| 国产精品美女www爽爽爽| 亚洲综合成人在线| 国产一区二区在线视频| 不卡一二三区首页| 欧美性videosxxxxx| 日韩欧美一级二级三级| 中日韩av电影| 日本va欧美va欧美va精品| 国产很黄免费观看久久| 欧美日韩精品专区| 国产99久久久精品| 91麻豆精品91久久久久久清纯| 日韩三级在线免费观看| 国产日产精品1区| 一区二区三区欧美激情| 久久疯狂做爰流白浆xx| 成人午夜视频福利| 国内成人自拍视频| 在线看日本不卡| 久久久www成人免费无遮挡大片| 亚洲精品国产无套在线观| 美女一区二区视频| 欧美日韩国产小视频在线观看| 久久理论电影网| 丝袜亚洲另类欧美| 91久久奴性调教| 国产精品人妖ts系列视频| 97久久超碰国产精品| 91精品国产91久久综合桃花| 1000部国产精品成人观看| 激情六月婷婷久久| 欧美久久久久久久久久| 一区二区三区在线免费视频| 91免费小视频| 国产精品久久影院| 国产成人aaaa| 久久久久亚洲蜜桃| 久久99国产精品免费网站| 欧美丝袜自拍制服另类| 亚洲女与黑人做爰| 99r国产精品| 中文字幕 久热精品 视频在线| 精品一区二区三区欧美| 日韩视频一区二区三区在线播放| 日韩国产在线观看| 日韩欧美www| 久88久久88久久久| 2020国产精品| 成人性视频免费网站| 国产精品美女久久久久久2018 | 亚洲午夜精品17c| 欧洲精品一区二区| 一区二区三区在线不卡| 色噜噜久久综合| 日本伊人色综合网| 精品免费国产一区二区三区四区| 极品瑜伽女神91| 国产欧美日韩卡一| 97久久超碰国产精品| 亚洲一区二区三区精品在线| 欧美日韩在线一区二区| 日韩精品电影在线观看| 亚洲国产综合人成综合网站| 91黄色免费网站| 日本在线不卡一区| 国产视频一区不卡| 国产91在线观看| 久久精品视频一区| 91小宝寻花一区二区三区| 亚洲高清在线精品| 91精品福利在线一区二区三区| 亚洲高清免费观看| 这里只有精品视频在线观看| 视频一区欧美精品| 久久综合狠狠综合久久综合88| 国内精品免费**视频| 日韩毛片视频在线看| 欧美一区二区三区四区久久 | 在线不卡中文字幕| 黄网站免费久久| 亚洲精品国产无天堂网2021 | 成人免费观看男女羞羞视频| 亚洲一区中文日韩| 日韩精品中文字幕在线不卡尤物| 成人高清视频在线| 日本女人一区二区三区| 国产精品成人在线观看| 欧美一区二区视频观看视频| 成人av电影在线播放| 日韩av一区二区三区| 久久久99久久精品欧美| 7777精品伊人久久久大香线蕉完整版 | 欧美激情综合在线| 欧美精品久久久久久久多人混战 | 午夜精品久久久久久久久久| 精品免费日韩av| 色丁香久综合在线久综合在线观看| 亚洲午夜日本在线观看| 国产欧美日韩在线视频| 成人国产精品免费观看| 图片区小说区区亚洲影院| 国产日产欧美一区二区视频| 欧美三区在线视频| 国产91丝袜在线播放0| 蜜桃视频在线观看一区| 亚洲一区二区精品3399| 中文字幕欧美日韩一区| 欧美大肚乱孕交hd孕妇| 欧美三级视频在线观看| 94-欧美-setu| av一区二区不卡| 成人av网在线| 岛国精品在线观看| 国产一区二区三区精品视频| 日本一区中文字幕| 日本91福利区| 欧美aⅴ一区二区三区视频| 午夜精品成人在线视频| 亚洲电影一级黄| 亚洲电影视频在线| 亚洲大片在线观看| 视频一区视频二区中文| 青青草精品视频| 免费看日韩a级影片| 日本aⅴ免费视频一区二区三区| 午夜激情一区二区| 午夜影院在线观看欧美| 日韩精品每日更新| 国产在线不卡一区| 国产福利精品导航| 成人深夜福利app| 波多野结衣精品在线| 91蜜桃免费观看视频| 色综合天天综合网天天狠天天| 91丝袜呻吟高潮美腿白嫩在线观看| 国产在线精品一区在线观看麻豆| 久久99国产精品成人| 国产精品1024久久| 91一区二区在线| 欧美在线色视频| 在线电影欧美成精品| 精品处破学生在线二十三| 国产欧美精品在线观看| 亚洲人精品一区| 丝袜美腿一区二区三区| 国产一区在线精品| 91蝌蚪porny成人天涯| 欧美精品第一页| 国产欧美视频在线观看| 亚洲国产一区二区在线播放| 午夜成人免费电影| 国产寡妇亲子伦一区二区| 在线观看免费一区| 精品成人佐山爱一区二区| 亚洲欧美乱综合| 激情国产一区二区| 91久久一区二区| 欧美v日韩v国产v| 亚洲欧美另类小说| 久久精品999| 在线免费观看日韩欧美| 26uuu久久天堂性欧美| 一区二区三区成人在线视频| 国产一区二区三区电影在线观看| 91黄色免费观看| 国产精品视频麻豆| 国内精品伊人久久久久av影院| 欧美亚洲免费在线一区|