异步IO调用

// 02 异步过程调用.cpp : 定义控制台应用程序的入口点。
//

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


typedef struct _MYOVERLAPPED
{
    OVERLAPPED  sysOver;


    char* buf;
}MYOVERLAPPED, *PMYOVERLAPPED;

void WINAPI Fun(DWORD ErrorCode, DWORD dwSize, LPOVERLAPPED pOverLapped)
{
    PMYOVERLAPPED pMyOver = (PMYOVERLAPPED)pOverLapped;
    printf("%x%x", *(pMyOver->buf), *(pMyOver->buf + 1));

}


int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hFile = CreateFile(
        L"D:\1.exe",            //文件路径
        GENERIC_READ | GENERIC_WRITE, //操作权限
        0,                                                        //共享方式
        NULL,                                                 //安全属性
        OPEN_EXISTING,                               //打开方式
        FILE_FLAG_OVERLAPPED,                 //最重要的!!!!已异步的方式打开一个文件
        NULL                                                   //没用
        );
    DWORD dwSize = GetFileSize(hFile, NULL);                        //获取文件大小
    DWORD dwRubbish = 0;
    MYOVERLAPPED  ol = {};
    char* buf = new char[dwSize];
    ol.buf = buf;

    ReadFileEx(hFile, buf, dwSize, (LPOVERLAPPED)&ol, Fun);
    SleepEx(0, TRUE);
    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/Alyoyojie/p/5317260.html