Sistem Programlama - Dosya Islemede Kullanilan Fonksiyon Ve Parametreler
- Sevdanur GENC

- Mar 4, 2012
- 3 min read
Bu makalemizde dosya islemede kullanilan ; - CreateFile, - WriteFile, - ReadFile, - CloseHandle isimli Fonksiyon ve Parametrelerden bahsedecegiz. CreateFile Fonksiyonu ; Bu fonksiyonla birlikte var olan dosyalarin bir yenisini uretir yani bir kopyasini cikarir. CREATEFILE - Dosya Olusturma ve Acma ; CreateFile fonksiyonu iki sekilde kullanilabiliyordu. Parametreler icin atanan degiskenlerde genellikle parametrelerin on eklerinde bulunan takilar degiskenlerin onune aktariliyor. Ornegin; DWORD parametresi icin olusturulan bir degisken ismi dwAccess seklinde olabilir. Kullanilirken aldigi parametreler ve aciklamalari asagida ki gibidir; HANDLE CreateFile( LPCTSTR lpName, DWORD dwAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreate, DWORD dwAttrsAndFlags, HANDLE hTemplateFile)Return : Hata gerceklestigi anda INVALID_HANDLE_VALUE. lpName ; Belirtilen nesnenin acilmasi yada kapanilmasi icin tanimlanmis bir pointer'dir, isimdir. LPCTSTR ; Karakter ve string veri turleri icin kullanilan genel bir tiptir. dwAccess ; Generic_Read ve Generic_Write fonksiyonlari kullanilarak okuma ve yazma erisim islemleri icin atanmistir. dwShareMode ; Dosya paylasimlari icin kullanacagimiz bir degiskendir. 3 deger almaktadir. Bunlar ; Eger dosya paylasimi olmayacaksa 0 degerini alir. Sadece Okuma icin yetki verilecekse; FILE_SHARE_READ degerini alir. Sadece Yazma islemi icin yetki verilecekse; FILE_SHARE_WRITE degerini almaktadir. lpSecurityAttributes ; LPSECURITY_ATTRIBUTES icin kullanilacak bir pointer olusturuyoruz. dwCreate ; Yeni bir dosya olusturmamiz icin veya var olan bir dosya uzerine yazmamiz icin kullanilir. Aldigi degerler bulunmakdir. Bunlar ; CREATE_NEW ile yeni bir dosya olustururuz, fakat sistemde onceden varsa, varolduguna dair bir uyari mesaji aliriz. CREATE_ALWAYS ile yeni bir dosya olusturur, fakat onceden var olan bir dosya varsa uzerine yazar. OPEN_EXISTING ile onceden olusturulmus dosyayi acar, dosya yoksa hata verecektir. OPEN_ALWAYS ile dosyayi acmak icin kullanilir, dosya yoksa yenisini olusturur. TRUNCATE_EXISTING ile dosya boyutunu sifirlar. dwAttrsAndFlags ; Dosya oznitelikleri icin kullanilir. Toplamda 32 adet oznitelik ve bayrak vardir. Bunlardan bazilari ; FILE_ATTRIBUTE_NORMAL ile diger oznitelikler kullanilmiyorsa bu oznitelik kullanilmaktadir. FILE_ATTRIBUTE_READONLY ile sadece okunabilir ozniteligi kazandirilabilir. FILE_FLAG_DELETE_ON_CLOSE ile gecici dosyalar icin kullanilir, Handle'in tuttugu nesneyi siler. FILE_FLAG_RANDOM_ACCESS ile rastgele erisim icin tasarlanmis dosyalarda kullanilan bir ozniteliktir. FILE_FLAG_SEQUENTIAL_SCAN ile sirali dosya erisimlerinde kullanilan bir ozniteliktir. FILE_FLAG_WRITE_THROUGH ve FILE_FLAG_NO_BUFFERING gelismis bayraklar ise bazi ileri sik kullanilan uygulamar icin kullailmaktadir. hTemplateFile ; Handle islemi icin kullanilacaktir. CLOSEHANDLE - Dosya Kapama ; Dosya kapama fonksiyonlari gerceklestigi anda Handle'larin tuttugu nesneler silinebilir. Windows kapanista tum handle'lari da kapatacaktir. Fakat uygulamalar sonlandirilmadan once bu komutlar ile denetimli bir sekilde dosyalari kapatacaktir. BOOL CloseHandle (Handle hObject)Return : Eger fonksiyon basarili ise TRUE, degilse FALSE'dir.READFILE - Dosya Okuma ;BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped )Return: Okuma basarili ise TRUE Aldigi parametleri inceleyecek olursak ; hFile ; Dosya icin tutulan Handle'i belirtir. lpBuffer ; Girilecek verilerin tutulacagi bellekteki pointer'i belirtir. nNumberOfBytesToRead ; Dosyadan okunacak byte sayisini belirtir. lpNumberOfBytesRead ; ReadFile tarafindan okunacak gercek byte sayisini tutar. Bu deger sifirda olabilir. lpOverlapped; OVERLAPPED structure'i icin pointer gorevini almaktadir. WRITEFILE - Dosya Yazma ;BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped )Return: Fonksiyon basarili ise TRUE, Degilse FALSE. Goruldugu gibi yine benzer mantiga dayali olarak onceden kullandigimiz parametreler kullanilmistir. Dilerseniz makalemizi sonlandirmadan once de bu kavramlari pekistirebilecegimiz bir uygulama kodunu inceleyelim. Boylelikle onceki makalede yaptigimiz uygulamalari simdi daha iyi kavramis olacaksiniz. hIn = CreateFile(argv<1>, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hIn==INVALID_HANDLE_VALUE) { printf(“Girdi Dosyasi Acilamiyor. Hata ; %x\n”, GetLastError()); return 2; } Komutu ile bahsetmek istediklerimiz asagida sirasiyla aciklanmistir ; CreateFile Komutu icin ;CreateFile Komutu icin ; argv<1> ; Program icerisinde belirttigimiz dosyanin tutuldugu degiskedir. GENERIC_READ ; Dosyaya Okuma islemi yapilacak. FILE_SHARE_READ ; Paylasimlarda sadece okuma yetkisi olacak. NULL ; Guvenlik icin bir nitelik belirtilmemistir. OPEN_EXISTING ; Dosya onceden olusturulmussa acilacaktir. FILE_ATTRIBUTE_NORMAL ; Herhangi bir oznitelik belirtilmedigi icin default secenek belirtilmistir. INVALID_HANDLE_VALUE komutu icin ; Return ifadesinde Hata gerceklestigi anda INVALID_HANDLE_VALUE degeri donecegi icin sart cumlecigine hata olustugu anda GetLastError() komutu ile hata mesajini kullaniciya bildiriyor.
Comments