Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DWORD ListDirectory(LPTSTR path, dirEntry* dirBuffer, DWORD* bufferSize, DWORD* bufferPosition){
- DWORD lastError;
- HANDLE findHandle = NULL;
- dirEntry* temp = NULL;
- WIN32_FIND_DATA dataFound;
- char errMsg[MAX_BUFFER_SIZE];
- _RPTFW1(_CRT_WARN, _T("Listing directory: %s\n"), path);
- if((path == NULL) || (dirBuffer = NULL) || (*bufferSize <= 0) || (*bufferPosition < 0)){
- lastError = ERROR_INVALID_PARAMETER;
- goto error;
- }
- findHandle = FindFirstFile(path, &dataFound);
- if((findHandle == NULL) || (findHandle == INVALID_HANDLE_VALUE)){
- lastError = GetLastError();
- goto error;
- }
- _tprintf(_T("%s"), dataFound.cFileName);
- dirBuffer[*bufferPosition].fileSizeLow = dataFound.nFileSizeLow;
- _tcscpy(dirBuffer[*bufferPosition].fileName, dataFound.cFileName);
- (*bufferPosition)++;
- while(FindNextFile(findHandle, &dataFound) != 0){
- if(*bufferPosition == *bufferSize){
- temp = (dirEntry*) realloc(dirBuffer, (*bufferSize + MEM_SIZE) * sizeof(dirEntry));
- if(temp == NULL){
- lastError = ERROR_NOT_ENOUGH_MEMORY;
- goto error;
- } else {
- dirBuffer = temp;
- *bufferSize += MEM_SIZE;
- }
- }
- dirBuffer[*bufferPosition].fileSizeLow = dataFound.nFileSizeLow;
- _tcscpy(dirBuffer[*bufferPosition].fileName, dataFound.cFileName);
- (*bufferPosition)++;
- }
- goto finalize;
- error:
- ExtractMessage(lastError, errMsg);
- _RPTFW1(_CRT_ERROR, _T("Listing Failed! Cause: %S"), errMsg);
- if((findHandle != NULL) && (findHandle != INVALID_HANDLE_VALUE)){
- CloseHandle(findHandle);
- }
- return lastError;
- finalize:
- _RPTFW0(_CRT_WARN, _T("Listing successfull.\n"));
- CloseHandle(findHandle);
- return ERROR_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement