این تابع یک API ویندوز میباشد و برای ساخت یا باز کردن یک فایل یا یک جریان ورودی خروجی برای یک وسیله میباشد .
این تابع در ویندز XP و Server 2003 بعد از آنها قابل استفاده میباشد و در Kernel32.dll موجود است .

در حالت یونی کد از CreateFileW و در حالت اسکی از CreateFileA نیز استفاده میشود

HANDLE WINAPI CreateFile(
  LPCTSTR               lpFileName,
  DWORD                 dwDesiredAccess,
  DWORD                 dwShareMode,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  DWORD                 dwCreationDisposition,
  DWORD                 dwFlagsAndAttributes,
  HANDLE                hTemplateFile
);


این تابع یک handle را باز میگرداند که به وسیله آن میتوان به فایل ها و دایرکتوری ها و منابع ارتباطی و pipe  و ... دسترسی داشت .
ما در این بخش مثالی از ساخت یک فایل ساده میزنیم و بقیه کاربرد های آن را در بخش های جداگانه ای و بصورت فرعی آموزش میدهیم .

توضیح مختصری پیرامون آرگمان ها :

lpFilename :

نام فایل

dwDesiredAccess :

نوع دسترسی میباشد ، خواندن ، نوشتن ...

انواع مختلف این آرگمان به شرح زیر میباشد

GENERIC_READ

GENERIC_WRITE

GENERIC_EXECUTE

GENERIC_ALL

برنامه نمونه :


#include <iostream>
#include <Windows.h>

int main ()
{
HANDLE myfile = CreateFile(TEXT("D:\\file.txt"),
 GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);

if (myfile == INVALID_HANDLE_VALUE)
{
std::cout << "file not create ... \n";
}
else
{
std::cout << "file create ... \n";
DWORD bytes;
WriteFile(myfile, "Hello", sizeof("Hello"), &bytes, NULL);
CloseHandle(myfile);
}
system("pause");
return 0;
}