[WinApi] strumieniownie IO a metody asynchroniczne

0

Witam
Mam kontrolkę richtextbox i chciałbym strumieniować w niej dane wychodzące jak i wchodzące. Samo strumieniowanie nie sprawia mi problemu, jednakże do zapisu lub odczytu danych chciałbym wykorzystać metody asynchroniczne readfileex i writefileex.

	hPlik = CreateFile(nazwaPliku, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 
					   FILE_FLAG_OVERLAPPED, NULL);

	EDITSTREAM editstream;
	editstream.dwCookie = (DWORD)hPlik;
	editstream.dwError = 0;
	editstream.pfnCallback = (EDITSTREAMCALLBACK)ZapisCallback;
	SendMessage(h110, EM_STREAMOUT, SF_TEXT, (LPARAM)&editstream);
}

void CALLBACK Notatnik::WriteFileCompleted(DWORD errorCode, DWORD bytesCopied, OVERLAPPED* overlapped){}

DWORD CALLBACK Notatnik::ZapisCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
	OVERLAPPED overlapped = {0};
	WriteFileEx((HANDLE)dwCookie, pbBuff, cb, &overlapped, WriteFileCompleted);
	return 0;
}

Powyższy kod sprawia, że tylko pierwsze 2KB danych zostają zapisane do pliku. Wydaje mi się, że jest to spowodowane tym, że metoda WriteFileEx jest wywoływana ponownie zanim jej poprzednie wywołanie zakończyło proces zapisu. Proszę powiedzcie czy macie pomysły na rozwiązanie tego problemu.

ps. Mam problem z debugowaniem kodu. W momencie gdy debbuger chce wyjść z jakiegoś callbacka to wyskakuje komunikat "there is no source code" czy jakoś tak. Rozumiem że w tym momencie następuje odwołanie do jakichś zamkniętych części kodu, które nie mogą być debbugowane. Czy jest możliwość skonfigurowania tak VS 2008, ażeby w takich momentach przeskakiwał do następnych jawnych części kodu?

0

@ps. - z tego co pamietam, nie. co najwyzej, mozesz wyjsc do dissassembla

1 użytkowników online, w tym zalogowanych: 0, gości: 1