Страшная ошибка при создании процесса

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
nazavrik
Сообщения: 11
Зарегистрирован: 29 сен 2009, 13:12

Программа в каталоге, в котором она была вызвана, должна перебирать все имеющиеся файлы и выводить их имена.

Код: Выделить всё

int _tmain(int argc, _TCHAR* argv[])
{
	
	TCHAR buffer[MAX_PATH];
	HANDLE hFile;
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	WIN32_FIND_DATA findFileData;
	DWORD dwError;


	ZeroMemory(&si, sizeof(STARTUPINFO));
	si.cb = sizeof(STARTUPINFO);

	GetCurrentDirectory(sizeof(buffer), buffer);

	if(!CreateProcess(NULL, NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi))
	{
		printf("Create Process failed (%d)\n", GetLastError());
		return -1;
	}
	WaitForSingleObject(pi.hProcess, INFINITE);
	CloseHandle(pi.hProcess);
	CloseHandle(pi.hThread);

	SetCurrentDirectory(buffer);

	hFile = FindFirstFile(TEXT("*.*"), &findFileData);
	
	if(hFile==INVALID_HANDLE_VALUE)
	{
		printf("Invalid file handle (%d)\n", GetLastError());
		return -2;
	}
	else 
	{
		printf("First file name is %s\n", findFileData.cFileName);
	}
	while(FindNextFile(hFile, &findFileData)!=0)
	{
		printf("File name is %s\n", findFileData.cFileName);
	}

	dwError = GetLastError();

	FindClose(hFile);

	if(dwError!=ERROR_NO_MORE_FILES)
	{
		printf("Error!%d", GetLastError());
		return -3;
	}

	return 0;
}
При компиляции не выдаются даже варнинги - все чисто. Но при запуске в строчке создания процесса выдается ошибка: Access violation reading location 0x00000000.

Ничего не понимаю.
Аватара пользователя
Airhand
Сообщения: 239
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

Зачем ты создаёшь процесс ? Ты передаёшь в качестве исполняемого модуля NULL, вот оно и ругается.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
nazavrik
Сообщения: 11
Зарегистрирован: 29 сен 2009, 13:12

Да, я вчера уже разобрался)

Большое спасибо!
Ответить