#include #include typedef struct FileP{ WCHAR Search[MAX_PATH]; WCHAR OldName[MAX_PATH]; WCHAR NewName[MAX_PATH]; volatile INT Done; } PATHS; DWORD WINAPI DelFile (LPVOID lpParam){ PATHS* pData = (PATHS*)lpParam; while(!pData->Done) ; return 0; } DWORD WINAPI EnumFolderContent (LPVOID lpParam){ PATHS* pData = (PATHS*)lpParam; while(!pData->Done) ; return 0; } DWORD WINAPI RenameFile (LPVOID lpParam){ PATHS* pData = (PATHS*)lpParam; while(!pData->Done) ; return 0; } DWORD WINAPI CreateFileTest (LPVOID lpParam){ PATHS* pData = (PATHS*)lpParam; while(!pData->Done) ; return 0; } int main(void){ HANDLE DelFileHandle = 0; HANDLE EnumFolderHandle = 0; HANDLE RenameFileHandle = 0; HANDLE CreateFileHandle = 0; HANDLE ArrayHandles[4]; INT num; PATHS FilePaths; INT DataRenameFileThread = 10; WCHAR Path[MAX_PATH] = L"C:\\New\\"; //WCHAR Path[MAX_PATH] = L"C:\\ReactOS\\bin\\testdata\\"; WCHAR TestName[MAX_PATH] = L"Test.xxx"; WCHAR DeleteName[MAX_PATH] = L"Delete.xxx"; wcscpy(FilePaths.OldName, L""); wcscat(FilePaths.OldName, Path); wcscat(FilePaths.OldName, TestName); wcscpy(FilePaths.NewName, L""); wcscat(FilePaths.NewName, Path); wcscat(FilePaths.NewName, DeleteName); wcscpy(FilePaths.Search, L""); wcscat(FilePaths.Search, Path); wcscat(FilePaths.Search, L"*.xxx"); FilePaths.Done = 0; printf("Stop the infinite looooooooooop entering 5 and pressing Enter \n>>>> "); //Create both threads. CreateFileHandle = CreateThread( NULL, 0, CreateFileTest, &FilePaths, 0, NULL); if (!CreateFileHandle) ExitProcess(0); EnumFolderHandle = CreateThread( NULL, 0, EnumFolderContent, &FilePaths, 0, NULL); if (!EnumFolderHandle) ExitProcess(1); RenameFileHandle = CreateThread( NULL, 0, RenameFile, &FilePaths, 0, NULL); if (!RenameFileHandle) ExitProcess(2); DelFileHandle = CreateThread( NULL, 0, DelFile, &FilePaths, 0, NULL); if (!DelFileHandle) ExitProcess(3); /* Store the handles */ ArrayHandles[0] = CreateFileHandle; ArrayHandles[1] = EnumFolderHandle; ArrayHandles[2] = RenameFileHandle; ArrayHandles[3] = DelFileHandle; /* Stop the infinite loop with number "5" */ while((num = getchar())!= 53); /* Force both threads to stop */ FilePaths.Done = 1; /* Wait until all are terminated */ WaitForMultipleObjects( 4, ArrayHandles, TRUE, INFINITE); /* Close all handles */ CloseHandle(ArrayHandles[0]); CloseHandle(ArrayHandles[1]); CloseHandle(ArrayHandles[2]); CloseHandle(ArrayHandles[3]); return 1; }