Win32 File API FindClose function

Download EaseFilter Monitor, Control and Encryption Filter Driver SDK Setup File
Download EaseFilter Monitor, Control and Encryption Filter Driver SDK Zip File

Closes a file search handle opened by the FindFirstFileFindFirstFileExFindFirstFileNameW,FindFirstFileNameTransactedWFindFirstFileTransactedFindFirstStreamTransactedW, orFindFirstStreamW functions.

Syntax

BOOL FindClose(    HANDLE hFindFile  );  

Parameters

hFindFile

The file search handle.

Return Value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

After the FindClose function is called, the handle specified by the hFindFile parameter cannot be used in subsequent calls to the FindNextFileFindNextFileNameWFindNextStreamW, or FindClosefunctions.

Examples

The following example calls FindFirstFileFindNextFile, and FindClose to list files in a specified directory.

#include <windows.h>  
#include <tchar.h>   
#include <stdio.h>  
#include <strsafe.h>  
#pragma comment(lib, "User32.lib")    

void DisplayErrorBox(LPTSTR lpszFunction);   

int _tmain(int argc, TCHAR *argv[])  
{    
 	WIN32_FIND_DATA ffd;     
	LARGE_INTEGER filesize;     
	TCHAR szDir[MAX_PATH];     
	size_t length_of_arg;     
	HANDLE hFind = INVALID_HANDLE_VALUE;     
	DWORD dwError=0;          

	// If the directory is not specified as a command-line argument,     
	// print usage.      
	 if(argc != 2)     
     {    _tprintf(TEXT("\nUsage: %s <directory name>\n"), argv[0]);        
	     return (-1);     
     }       
     
     // Check that the input path plus 3 is not longer than MAX_PATH.     
	 // Three characters are for the "\*" plus NULL appended below.    
     StringCchLength(argv[1], MAX_PATH, &length_of_arg);
     if (length_of_arg > (MAX_PATH - 3))     
	{ 
     _tprintf(TEXT("\nDirectory path is too long.\n"));        
     return (-1);     
    }       
    
    _tprintf(TEXT("\nTarget directory is %s\n\n"), argv[1]);       
    
    // Prepare string for use with FindFile functions.  First, copy the     
    // string to a buffer, then append '\*' to the directory name.    
    StringCchCopy(szDir, MAX_PATH, argv[1]);     
    StringCchCat(szDir, MAX_PATH, TEXT("\\*"));       
    
    // Find the first file in the directory.       
    hFind = FindFirstFile(szDir, &ffd);       
    
    if (INVALID_HANDLE_VALUE == hFind)      
    {        
      	DisplayErrorBox(TEXT("FindFirstFile"));        
        return dwError;     
     }           
     
     // List all the files in the directory with some info about them.       
     
     do     
     {        
     	if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)        {           
        	_tprintf(TEXT("  %s   <DIR>\n"), ffd.cFileName);        }        
        else        
        {           
        	filesize.LowPart = ffd.nFileSizeLow;
            filesize.HighPart = ffd.nFileSizeHigh;
            
            _tprintf(TEXT("  %s   %ld bytes\n"), ffd.cFileName, filesize.QuadPart);        
         }     
     }while (FindNextFile(hFind, &ffd) != 0);        
     
     dwError = GetLastError();     
     
     if (dwError != ERROR_NO_MORE_FILES)      
     {        
     	DisplayErrorBox(TEXT("FindFirstFile"));     
     }       
     
     FindClose(hFind);     
     
     return dwError;  
 }