1.3 Алгоритм сипаттамасы
Файлдарды құру жəне ашу
Файлдардың бардық типін құру жəне ашу үшін API Win32 – CreateFile жалғыз функциясы жұмыс жасайды . Қосымшада файлдан оқу, файлға жазу немесе екеуі де орындалу керек па екенін нұсқауға болады.
HANDLE CreateFile ( LPCTSTR lpszName, DWORD fdwAccess,
DWORD fdwShareMode, LPSECURITY_ATTRIBUTES lpsa,
DWORD fdwCreate, DWORD fdwAttrsAndFlags, HANDLE
hTemplateFile)
Қайтарылатынмəн: ашық файл объектісініңде скрипторы немесе сəтсіздік болған жағдайда - INVALID_HANDLE_FAILURE.
Өлшемдері
lpszName – ашу немесе құруды талап ететін файлдыңаты, канал немесе басқа аталынған объекттен тұратын жолды нұсқағыш.
fdwAccess GENERIC_READ жəне GENERIC_WRITE мəндеріне сəйкес оқу немесе жазуға қатынайтын режимді анықтайды. Тұрақты шамалардың басқааттары қолданылуы мүмкін. Бұл мəндерді “немесе” разрядтықтың көмегімен біріктіруге болады.
fdwShareMode – бұл “немесе” разрядтықпен төменде келтірілген мəндер бірлестігін біріктіру:
0 – файлға бірлескен қатынау рұқсат етілмейді.
FILE_SHARE_READ – осы файлды параллельді оқуға аша алатын басқа процестер.
FILE_SHARE_WRITE – файлға параллельді жазу рұқсат етіледі.
Бұғаттау немесе басқа механизмдерді қолданғанда, бір файлдың параллельді модификациялануына программист жолбермеуі керек.
lpsa SECURITY_ATTRIBUTES құрылымына нұсқайды.
fdwCreate жаңа файлды құру керектігін, бар файлды ауыстыруды жəне т.б.анықтайды.Бөлек мəндерді“немесе”разрядтықтың операторымен біріктіруге болады.
-CREATE_NEW – егер нұсқалған файл бар болса, сəтсіздікпен аяқталады; болмаса жаңа файл құрылады.
-CREATE_ALWAYS – бар файл жаңа файлмен ауыстырылады.
-OPEN_EXISTING – сəтсіздік, егер файл жоқ болса.
-OPEN_ALWAYS – егер файл жоқ болса, ол ашылады жəне құрылады.
-TRUNCATE_ EXISTING – файлдың нольдік ұзындығы орнатылады.
FdwAccess-те болмағанда GENERIC_WRITE рұқсаты болуы керек.
fdwAttrsAndFlags атрибуттармен жалаушаларды анықтайды . 16жалаушалармен атрибуттар бар. Атрибуттар – бұл файлдың мінездемесі, бар жалауша ашылған кезде, олар есептелінбейді. Төменде кейбір маңызды атрибуттармен жалаушалар келтірілген.
-FILE_ATTRIBUTE_NORMAL – басқа атрибуттар орнатылмаған жағдайда ғана қолданылуы мүмкін (бірақ жалаушалар орнатылған болуы мүмкін).
-FILE_ATTRIBUTE_ READONLY – қосымшалар файлға жазада, не оны өшіреде алмайды.
-FILE_FLAG_DELITE_ON_CLOSE-уақытша файлдарға пайдалы. Файлдың соңғы ашық дескрипторы жабылған кезде, олөшіріледі.
-FILE_FLAG_OVERLAPPED – асинхронды енгізу-шығару үшін маңызды.Windows-таол əрқашан мəніне ие болады, тізбекті енгізу-шығару құрылғыларынан басқа. Тағы бірнеше қосымша жалаушалар файлды өзгерту (обработка) түрлерін анықтайды жəне Win32-ге файлдың тез жұмыс жасауын жəне бүтіндігін тексеруге (оптимизировать) рұқсат етеді.
-FILE_FLAG_WRITE_THROUGH – аралық кэштер тезарададикідегі файлдарға жазылады.
-FILE_FLAG_NO_BUFFERING – пайдаланушы кеңістігінде буферлеу
жəне кэштеу орындалмайды, деректер бағдарлама буферлеріне жəне олардан беріледі.
-FILE_FLAG_RANDOM_ACCESS – файл ерікті рұқсат құруға арналған
жəне Windows файлдың кэштеуін жүзеге алмасуға тырысады.
-FILE_FLAG_SEQUENTIAL_SCAN–файл тізбекті рұқсат құруға арналған жəне Windows сəйкесінше кэштеуд іжүзеге асырады. Бұл екі рұқсатқұру режимі міндетті түрде емес.
hTemplateFile – GENERIC_READ-танашылған файл дескрипторы, қайта құрылатын файлдың кеңейтілген атрибуттарына нықтайды жəне бұл жерде
fdwAttrsAndFlags мəні есептелінбейді. Əдетте бұл өлшем NULL-ға тең. Бар файл ашылған кезде hTemplateFile өлшемі есептелінбейді. Осы өлшемнің көмегімен жаңа файл атрибутын бар файлдікі сияқты етіп жасауға болады.
Достарыңызбен бөлісу: |