Bonjour,

Je veux écrire un fichier bidon en mode asynchrone.
L'évenement lpc n'est pas appelé et WriteFileEx est bloquant.

Pouvez-vous m'aider .


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
VOID CALLBACK lpc(
  DWORD dwErrorCode,
  DWORD dwNumberOfBytesTransfered,
  LPOVERLAPPED lpOverlapped
)
{
	delete lpOverlapped;
}



void WFO (HANDLE hf,char *buf,int size)
{
	LPOVERLAPPED ovl=new OVERLAPPED;
	ovl->hEvent=0;
	//ovl->Internal=0xffffffff;
	//ovl->InternalHigh=ovl->Internal;
	ovl->Offset=256;
	ovl->OffsetHigh=0;
	ovl->Pointer=NULL;
	ovl->hEvent=CreateEvent(
  NULL,
  true,
  false,NULL);
  SetLastError(0);
	int r=WriteFileEx(hf,buf,size,ovl,lpc);
  int err=GetLastError();
	r=r;
	
}

char buffer[25600000];

int _tmain(int argc, _TCHAR* argv[])
{
	
	HANDLE file = CreateFile("c:\\ess.bin", GENERIC_WRITE|GENERIC_WRITE,
		FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,
		FILE_FLAG_OVERLAPPED|FILE_FLAG_NO_BUFFERING, NULL);
	for (int j=0;j<1;j++)
	{
		
		for (int i =  0 ;i<25600000;i++)buffer[i]=j+1;
		WFO(file,buffer,25600000);
	}
	Sleep(2000);
	CloseHandle(file);

	return 0;
}