CreateFile(), GetFileType(), GetFileSize(), CloseHandle()


Compiler: Visual C++ Express Edition 2005

Compiled on Platform: Windows XP Pro SP2

Header file: Standard and Windows

Additional library: Windows Platform SDK

Additional project setting: Set project to be compiled as C

Project -> your_project_name Properties -> Configuration Properties -> C/C++ -> Advanced -> Compiled As: Compiled as C Code (/TC)

Other info: non-CLR or unmanaged

To do: More on file management

To show: Using CreateFile(), GetFileType(), GetFileSize(), CloseHandle() C functions





#include <windows.h>

#include <stdio.h>


int main(void)


// the files' handles

HANDLE hFile, hFile1;

// filenames, the file is not there...

LPCWSTR fname = L"c:\\test.doc";

// the file is there...

LPCWSTR fname1 = L"c:\\txtcode\\module11.txt";

// temporary storage for file sizes

DWORD dwFileSize;

DWORD dwFileType;


// Create the test file. Open it "Create Always" to overwrite any existing file...

hFile = CreateFile(fname, GENERIC_READ | GENERIC_WRITE, 0, NULL,





printf("hFile is NULL\n");

printf("Could not create %S\n", fname);

// return error

return 4;



printf("%S file was created successfully!\n", fname);


// Get the file type...

dwFileType = GetFileType(hFile);

// Verify that the correct file size was written.

dwFileSize = GetFileSize(hFile, NULL);

printf("%S size is %d bytes and file type is %d\n", fname, dwFileSize, dwFileType);

CloseHandle(hFile); // close the file handle and the file itself


// Opening the existing file

hFile1 = CreateFile(fname1, // file to open

GENERIC_READ, // open for reading

FILE_SHARE_READ, // share for reading

NULL, // default security

OPEN_EXISTING, // existing file only


NULL); // no attribute template




printf("Could not open %S file, error %d\n", fname1, GetLastError());

return 1;


dwFileType = GetFileType(hFile1);

dwFileSize = GetFileSize(hFile1, NULL);


printf("%S size is %d bytes and file type is %d\n", fname1, dwFileSize, dwFileType);

// close the file's handle and itself


return 0;



Output example:


c:\test.doc file was created successfully!

c:\test.doc size is 0 bytes and file type is 1

c:\txtcode\module11.txt size is 13550 bytes and file type is 1

Press any key to continue . . .



C and C++ Programming Resources | C & C++ Code Example Index