#include <stdio.h>
#include <windows.h>
VOID CALLBACK FileIOCompletionRoutine(DWORD dwErrorCode,DWORD dwNumberOfBytesTransfered,LPOVERLAPPED lpOverlapped)
{
printf("对于此次擦在返回的状态%d\n",dwErrorCode);
printf("告诉已经操作了多少字节,也就是在IRP里的Infomation%d\n",dwNumberOfBytesTransfered);
return;
}
int main (void)
{
HANDLE hDevice=CreateFile(TEXT("C:\\1.txt"),
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, ///此处设置FILE_FLAG_OVERLAPPED
NULL);
if (hDevice==INVALID_HANDLE_VALUE)
{
printf("Open Error\n");
return 0;
}
OVERLAPPED overlap={0};
UCHAR buffer[100]={0};
//读设备
ReadFileEx(hDevice,buffer,100,&overlap,FileIOCompletionRoutine);
//做一些其他操作
OutputDebugString(TEXT("hello"));
SleepEx(0,TRUE);
//关闭句柄
CloseHandle(hDevice);
getchar();
return 0;
}
ReadFileEx异步读设备
最新推荐文章于 2020-07-26 22:23:52 发布