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