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

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

?? mmfsparse.cpp

?? c++的經典之作.是不可缺少的工具.大家可以現在學習
?? CPP
字號:
/******************************************************************************
Module:  MMFSparse.cpp
Notices: Copyright (c) 2000 Jeffrey Richter
******************************************************************************/


#include "..\CmnHdr.h"     /* See Appendix A. */
#include <tchar.h>
#include <WindowsX.h>
#include <WinIoCtl.h>
#include "SparseStream.h"
#include "Resource.h"


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


// This class makes it easy to work with memory-mapped sparse files
class CMMFSparse : public CSparseStream {
private:
   HANDLE m_hfilemap;      // File-mapping object
   PVOID  m_pvFile;        // Address to start of mapped file

public:
   // Creates a Sparse MMF and maps it in the process's address space.
   CMMFSparse(HANDLE hstream = NULL, SIZE_T dwStreamSizeMax = 0);

   // Closes a Sparse MMF
   virtual ~CMMFSparse() { ForceClose(); }

   // Creates a sparse MMF and maps it in the process's address space.
   BOOL Initialize(HANDLE hstream, SIZE_T dwStreamSizeMax);

   // MMF to BYTE cast operator returns address of first byte 
   // in the memory-mapped sparse file. 
   operator PBYTE() const { return((PBYTE) m_pvFile); }

   // Allows you to explicitly close the MMF without having
   // to wait for the destructor to be called.
   VOID ForceClose();
};


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


CMMFSparse::CMMFSparse(HANDLE hstream, SIZE_T dwStreamSizeMax) {

   Initialize(hstream, dwStreamSizeMax);
}


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


BOOL CMMFSparse::Initialize(HANDLE hstream, SIZE_T dwStreamSizeMax) {

   if (m_hfilemap != NULL) 
      ForceClose();

   // Initialize to NULL in case something goes wrong
   m_hfilemap = m_pvFile = NULL;

   BOOL fOk = TRUE;  // Assume success

   if (hstream != NULL) {
      if (dwStreamSizeMax == 0) {
         DebugBreak();  // Illegal stream size
      }

      CSparseStream::Initialize(hstream);
      fOk = MakeSparse();  // Make the stream sparse
      if (fOk) {
         // Create a file-mapping object
         m_hfilemap = ::CreateFileMapping(hstream, NULL, PAGE_READWRITE, 
            (DWORD) (dwStreamSizeMax >> 32I64), (DWORD) dwStreamSizeMax, NULL);

         if (m_hfilemap != NULL) {
            // Map the stream into the process's address space
            m_pvFile = ::MapViewOfFile(m_hfilemap, 
               FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 0);
         } else {
            // Failed to map the file, cleanup
            CSparseStream::Initialize(NULL);
            ForceClose();
            fOk = FALSE;
         }
      }
   }
   return(fOk);
}


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


VOID CMMFSparse::ForceClose() {

   // Cleanup everything that was done sucessfully
   if (m_pvFile != NULL) { 
      ::UnmapViewOfFile(m_pvFile); 
      m_pvFile = NULL; 
   }
   if (m_hfilemap != NULL) { 
      ::CloseHandle(m_hfilemap);   
      m_hfilemap = NULL; 
   }
}


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


#define STREAMSIZE      (1 * 1024 * 1024)    // 1 MB (1024 KB)
TCHAR szPathname[] = TEXT("C:\\MMFSparse.");
HANDLE g_hstream = INVALID_HANDLE_VALUE;
CMMFSparse g_mmf;


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


BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) {

   chSETDLGICONS(hwnd, IDI_MMFSPARSE);

   // Initialize the dialog box controls.
   EnableWindow(GetDlgItem(hwnd, IDC_OFFSET), FALSE);
   Edit_LimitText(GetDlgItem(hwnd, IDC_OFFSET), 4);
   SetDlgItemInt(hwnd, IDC_OFFSET, 1000, FALSE);

   EnableWindow(GetDlgItem(hwnd, IDC_BYTE), FALSE);
   Edit_LimitText(GetDlgItem(hwnd, IDC_BYTE), 3);
   SetDlgItemInt(hwnd, IDC_BYTE, 5, FALSE);

   EnableWindow(GetDlgItem(hwnd, IDC_WRITEBYTE), FALSE);
   EnableWindow(GetDlgItem(hwnd, IDC_READBYTE),  FALSE);
   EnableWindow(GetDlgItem(hwnd, IDC_FREEALLOCATEDREGIONS), FALSE);

   return(TRUE);
}


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


void Dlg_ShowAllocatedRanges(HWND hwnd) {

   // Fill in the Allocated Ranges edit control
   DWORD dwNumEntries;
   FILE_ALLOCATED_RANGE_BUFFER* pfarb = 
      g_mmf.QueryAllocatedRanges(&dwNumEntries);

   if (dwNumEntries == 0) {
      SetDlgItemText(hwnd, IDC_FILESTATUS, 
         TEXT("No allocated ranges in the file"));
   } else {
      TCHAR sz[4096] = { 0 };
      for (DWORD dwEntry = 0; dwEntry < dwNumEntries; dwEntry++) {
         wsprintf(_tcschr(sz, 0), TEXT("Offset: %7.7u, Length: %7.7u\r\n"), 
            pfarb[dwEntry].FileOffset.LowPart, pfarb[dwEntry].Length.LowPart);
      }
      SetDlgItemText(hwnd, IDC_FILESTATUS, sz);
   }
   g_mmf.FreeAllocatedRanges(pfarb);
}


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


void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {
   
   switch (id) {
      case IDCANCEL:
         if (g_hstream != INVALID_HANDLE_VALUE) 
            CloseHandle(g_hstream);
         EndDialog(hwnd, id);
         break;

      case IDC_CREATEMMF:
         // Create the file
         g_hstream = CreateFile(szPathname, GENERIC_READ | GENERIC_WRITE, 
            0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
         if (g_hstream == INVALID_HANDLE_VALUE) {
            chFAIL("Failed to create file.");
         }

         // Create a 1MB (1024 KB) MMF using the file
         if (!g_mmf.Initialize(g_hstream, STREAMSIZE)) {
            chFAIL("Failed to initialize Sparse MMF.");
         }
         Dlg_ShowAllocatedRanges(hwnd);

         // Enable/disable the other controls.
         EnableWindow(GetDlgItem(hwnd, IDC_CREATEMMF), FALSE);
         EnableWindow(GetDlgItem(hwnd, IDC_OFFSET),    TRUE);
         EnableWindow(GetDlgItem(hwnd, IDC_BYTE),      TRUE);
         EnableWindow(GetDlgItem(hwnd, IDC_WRITEBYTE), TRUE);
         EnableWindow(GetDlgItem(hwnd, IDC_READBYTE),  TRUE);
         EnableWindow(GetDlgItem(hwnd, IDC_FREEALLOCATEDREGIONS), TRUE);

         // Force the Offset edit control to have the focus.
         SetFocus(GetDlgItem(hwnd, IDC_OFFSET));
         break;

      case IDC_WRITEBYTE:
         {
         BOOL fTranslated;
         DWORD dwOffset = GetDlgItemInt(hwnd, IDC_OFFSET, &fTranslated, FALSE);
         if (fTranslated) {
            g_mmf[dwOffset * 1024] = (BYTE) 
               GetDlgItemInt(hwnd, IDC_BYTE, NULL, FALSE);
            Dlg_ShowAllocatedRanges(hwnd);
         }
         }
         break;

      case IDC_READBYTE:
         {
         BOOL fTranslated;
         DWORD dwOffset = GetDlgItemInt(hwnd, IDC_OFFSET, &fTranslated, FALSE);
         if (fTranslated) {
            SetDlgItemInt(hwnd, IDC_BYTE, g_mmf[dwOffset * 1024], FALSE);
            Dlg_ShowAllocatedRanges(hwnd);
         }
         }
         break;

      case IDC_FREEALLOCATEDREGIONS:
         // Normally the destructor causes the file-mapping to close.
         // But, in this case, we wish to force it so that we can reset 
         // a portion of the file back to all zeroes.
         g_mmf.ForceClose();

         // We call ForceClose above because attempting to zero a portion of 
         // the file while it is mapped, causes DeviceIoControl to fail with 
         // error ERROR_USER_MAPPED_FILE ("The requested operation cannot 
         // be performed on a file with a user-mapped section open.")
         g_mmf.DecommitPortionOfStream(0, STREAMSIZE);
         g_mmf.Initialize(g_hstream, STREAMSIZE);
         Dlg_ShowAllocatedRanges(hwnd);
         break;
   }
}


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


INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

   switch (uMsg) {
      chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog);
      chHANDLE_DLGMSG(hwnd, WM_COMMAND,    Dlg_OnCommand);
   }
   return(FALSE);
}


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


int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {

   chWindows2000Required();

   DialogBox(hinstExe, MAKEINTRESOURCE(IDD_MMFSPARSE), NULL, Dlg_Proc);
   return(0);
}


//////////////////////////////// End of File //////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久欧美中文字幕| 亚洲免费观看视频| 色欧美片视频在线观看在线视频| 天天亚洲美女在线视频| 中文字幕巨乱亚洲| 日韩一区二区在线观看视频播放| 国产成人在线免费| 日日噜噜夜夜狠狠视频欧美人 | 一区二区三区四区蜜桃| 日韩一区二区三区精品视频| 不卡电影免费在线播放一区| 日韩二区三区四区| 自拍偷拍欧美激情| 国产日韩亚洲欧美综合| 91麻豆精品国产自产在线 | 麻豆中文一区二区| 一区二区三区四区乱视频| 国产视频在线观看一区二区三区| 欧美丰满高潮xxxx喷水动漫| av电影在线观看一区| 理论片日本一区| 亚洲午夜日本在线观看| 国产精品久久二区二区| 久久综合久久综合久久综合| 欧美一区二区在线免费观看| 97精品久久久午夜一区二区三区 | 亚洲一区在线视频观看| 亚洲欧洲av在线| 久久精品夜夜夜夜久久| 337p粉嫩大胆噜噜噜噜噜91av| 欧美日韩中文国产| 色又黄又爽网站www久久| 99精品偷自拍| 91社区在线播放| 91一区二区三区在线观看| 不卡的电影网站| 成人av动漫网站| 成人精品在线视频观看| 成人免费毛片aaaaa**| 国产高清不卡二三区| 国产成人免费高清| 懂色av中文一区二区三区| 粉嫩一区二区三区性色av| 成人一区二区视频| 99久久久国产精品免费蜜臀| 99国产精品久久久久久久久久| 国产精品系列在线观看| 国产一区二区三区香蕉| 日韩电影一区二区三区| 婷婷中文字幕综合| 亚洲一本大道在线| 亚洲一级在线观看| 肉肉av福利一精品导航| 亚洲成国产人片在线观看| 亚洲精品五月天| 亚洲私人黄色宅男| 日韩一区中文字幕| 专区另类欧美日韩| 亚洲色图一区二区三区| 亚洲少妇中出一区| 亚洲蜜臀av乱码久久精品| 亚洲日本在线a| 伊人夜夜躁av伊人久久| 亚洲精品日产精品乱码不卡| 亚洲欧美日韩成人高清在线一区| 国产精品午夜在线| 欧美国产日韩在线观看| 国产精品国产精品国产专区不蜜| 久久奇米777| 国产精品乱人伦| 综合激情网...| 亚洲精品亚洲人成人网在线播放| 亚洲精品免费在线观看| 国产三级一区二区三区| 亚洲欧美日韩国产另类专区| 亚洲美女屁股眼交3| 亚洲韩国一区二区三区| 天天射综合影视| 美国十次了思思久久精品导航| 精东粉嫩av免费一区二区三区| 黄页网站大全一区二区| 国产伦精品一区二区三区免费迷| 国产盗摄一区二区| av网站一区二区三区| 欧美亚洲图片小说| 在线免费不卡视频| 欧美精品乱码久久久久久按摩| 日韩欧美成人一区| 中文在线资源观看网站视频免费不卡| 国产精品丝袜在线| 亚洲精品ww久久久久久p站| 亚洲h精品动漫在线观看| 免费成人性网站| 成熟亚洲日本毛茸茸凸凹| 色欧美片视频在线观看| 日韩视频免费直播| 国产精品午夜在线观看| 亚洲精品第1页| 日本欧美一区二区三区乱码| 国产乱淫av一区二区三区| www.66久久| 欧美精品 国产精品| 久久精子c满五个校花| 一区二区三区国产精华| 免费成人深夜小野草| 丰满亚洲少妇av| 6080午夜不卡| 欧美日韩和欧美的一区二区| 久久久噜噜噜久久中文字幕色伊伊| 一区在线播放视频| 蜜桃视频免费观看一区| 波多野结衣亚洲| 538prom精品视频线放| 国产精品日韩精品欧美在线| 亚洲成人av电影| 高清视频一区二区| 欧美日本在线播放| 中文字幕免费观看一区| 亚洲图片欧美色图| 欧美专区亚洲专区| 日韩一区二区三区三四区视频在线观看 | 国产自产v一区二区三区c| 色婷婷综合久久久久中文一区二区| 8v天堂国产在线一区二区| 亚洲欧美自拍偷拍色图| 免费在线一区观看| 色av成人天堂桃色av| 国产亚洲成aⅴ人片在线观看| 国产精品国产精品国产专区不蜜| 日本午夜一本久久久综合| av中文字幕不卡| 91精品午夜视频| 一区二区日韩电影| 成人福利视频网站| 久久精品一区二区三区不卡牛牛| 肉丝袜脚交视频一区二区| 色婷婷综合久久久久中文 | 国产调教视频一区| 亚洲一区二区三区四区在线观看| 成人免费视频网站在线观看| 26uuu国产在线精品一区二区| 日韩电影一区二区三区四区| 91麻豆免费观看| 国产精品人人做人人爽人人添| 国内精品伊人久久久久av影院 | 一区二区欧美视频| 91最新地址在线播放| 国产女人水真多18毛片18精品视频| 美女在线视频一区| 欧美精品高清视频| 亚洲一区二区三区国产| 色噜噜狠狠色综合中国| 国产精品少妇自拍| 色综合久久中文字幕综合网| 中文字幕在线不卡一区| 成人动漫av在线| 日韩美女视频一区二区 | 精品卡一卡二卡三卡四在线| 日韩电影在线观看网站| 666欧美在线视频| 天天综合天天做天天综合| 欧美日韩精品一区二区三区蜜桃| 一区二区三区电影在线播| 欧洲精品一区二区三区在线观看| 亚洲日本乱码在线观看| 91丨porny丨国产入口| 国产清纯白嫩初高生在线观看91| 东方aⅴ免费观看久久av| 欧美极品少妇xxxxⅹ高跟鞋 | 国产成人av在线影院| 久久久国产精华| 国产91丝袜在线播放九色| 国产精品污污网站在线观看| 岛国av在线一区| 亚洲人成网站色在线观看 | 不卡欧美aaaaa| 国产日产欧美精品一区二区三区| 懂色一区二区三区免费观看 | 久久综合久久综合久久| 国产精品亚洲一区二区三区在线| 国产视频一区在线播放| 91视频在线观看免费| 亚洲成va人在线观看| 日韩三级视频中文字幕| 国产suv精品一区二区6| 亚洲天堂网中文字| 99久久er热在这里只有精品15| 亚洲精品大片www| 欧美一区二区福利在线| 国产成人精品综合在线观看 | 欧美国产欧美综合| 91福利精品视频| 麻豆久久久久久| 国产精品久久三| 欧美精品粉嫩高潮一区二区| 日韩国产欧美视频| 国产亲近乱来精品视频 | 日韩美一区二区三区| 丰满白嫩尤物一区二区| 亚洲国产aⅴ天堂久久|