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;
    }

  • 相关阅读:
    9 文件处理
    8 字符编码
    7 基础汇总
    6 元组和集合类型
    5 列表和字典类型
    4 数字和字符串类型
    3 条件语句与循环语句
    2 输入输出与运算符
    服务端如何识别是selenium在访问以及解决方案参考二
    服务端如何识别是selenium在访问以及解决方案参考一
  • 原文地址:https://www.cnblogs.com/L-Sunny/p/8389306.html
Copyright © 2011-2022 走看看