zoukankan      html  css  js  c++  java
  • windows核心编程第17章 一个文件两个缓存

    因为我只是简单对比了windows核心编程上面四种读写方式的快慢,所以,对于重叠部分的考虑,只是简单的对半划分,没有深加工

    // ReadFileByTwoBuffer.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include<Windows.h>


    int main()
    {
    DWORD ReturnLength;
    BOOL IsOK = FALSE;
    char* v1=0;
    DWORD v2;
    DWORD Start, End;
    Start = GetTickCount();

    HANDLE FileHandle = CreateFile(L"E:/862.exe", GENERIC_READ | GENERIC_WRITE,
    0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (FileHandle == INVALID_HANDLE_VALUE)
    {
    printf("创建文件对象失败:%d ", GetLastError());
    return 0;
    }

    char*VirtualAlloc_1 = (char*)VirtualAlloc(NULL, 1024 * 1024 * 545, MEM_COMMIT, PAGE_READWRITE);
    IsOK = ReadFile(FileHandle, VirtualAlloc_1, 1024 * 1024 * 545, &ReturnLength, NULL);
    if (IsOK == TRUE)
    {

    //v1 = strstr(VirtualAlloc_1, VirtualAlloc_1);
    printf("%d ", ReturnLength);
    //printf("%s ", v1);
    }

    v2 = SetFilePointer(FileHandle, -1024*1024*500, 0, FILE_END);//有符号值的低位32位,指定要移动文件指针的字节数。
    // lDistanceToMove的正值在文件中向前移动文件指针,负值将文件指针移回。
    char*VirtualAlloc_2 = (char*)VirtualAlloc(NULL, 1024*1024*545, MEM_COMMIT, PAGE_READWRITE);

    IsOK = ReadFile(FileHandle, VirtualAlloc_2, 1024 * 1024 * 545, &ReturnLength, NULL);
    if (IsOK == TRUE)
    {
    //v1 = strstr(VirtualAlloc_2, VirtualAlloc_2);
    printf("%d ", ReturnLength);
    //printf("%s", v1);
    }

    End = GetTickCount();
    printf("time=%d ", End - Start);

    getchar();
    return 0;
    }

  • 相关阅读:
    字节跳动软开校招岗
    众安保险软开校招岗
    topjui中combobox使用
    easyui中datagrid+layout布局
    jquery/js记录点击事件,单击次数加一,双击清零
    java图片上传及图片回显1
    java格式化
    java中的String整理
    删除window10没用的服务
    修改mysql默认端口
  • 原文地址:https://www.cnblogs.com/L-Sunny/p/8389306.html
Copyright © 2011-2022 走看看