Войти

Показать полную графическую версию : [решено] Некая ошибка WriteFile?


Arrest
12-07-2008, 19:21
Помогите пожалуйста. Учу WinApi, написал небольшую программу:
#include <windows.h>


int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{
HANDLE fh;
LPCSTR towrite = "Preved!";
DWORD written;
fh = CreateFile("file.txt", GENERIC_WRITE, 0, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(fh, towrite, 7, NULL, NULL);
CloseHandle(fh);
ExitProcess(0);
return 0;
}


Компилирую Dev-C++'ом, запускаю - Windows матерится: pr.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.
При этом файл создается, и в него даже записаны данные! Если закомментировать строку с WriteFile - то все работает. Почему эта штука не работает?

mrcnn
12-07-2008, 20:12
MSDN: lpNumberOfBytesWritten
[out] Pointer to the number of bytes written by this function call. WriteFile sets this value to zero before taking action or checking errors.

4 параметр функции WriteFile является _ИСХОДЯЩИМ_. Функция пытается записать значение, а записывать некуда, возможно записывает в какую-то левую область данных, видимо, поэтому и матерится

Если так написать, то все ок: WriteFile(fh, towrite, 7, &written, NULL);

Arrest
12-07-2008, 20:58
mrcnn
Спасибо.




© OSzone.net 2001-2012