
- •Мустафина б.М., Сейдахметова г.Е., Әлібиева ж.М.
- •Пәндік оқу - әдістемелік кешені
- •Алматы 2012
- •1. Пәннің оқу бағдарламасы – syllabus
- •Оқытушылар туралы мәліметтер:
- •1.2 Пән туралы мәліметтер:
- •Оқу жоспарының көшірмесі
- •1.3 Пререквизиттер
- •1.6 Тапсырмалардың тізімі мен түрлері және оларды орындау кестесі
- •1.7 Әдебиеттер тізімі
- •1.8 Білімді бақылау және бағалау.
- •1 Модуль бойынша бақылау жүргізуге арналған сұрақтар (1-7 бөлімдер)
- •2 Модуль бойынша бақылау жүргізуге арналған сұрақтар:
- •1.9 Қойылатын талаптар
- •2 Негізгі таратылатын материалдар мазмұны
- •2.1 Курстың тематикалық жоспары
- •2.2 Лекциялық сабақ конспектілері
- •1.1 Windows ож құрылымы Жүйе құрылымының жалпы бейнелеуі
- •2.2. Ағындарды диспетчерлеу және жоспарлау
- •2.3 Ағынды анықтау
- •2.4 Ағындармен жұмыс істеуге арналған api функциясы
- •2.5 Ағындардың приоритеті
- •3.1 Процесстерді басқару
- •3.2 Windows операциялық жүйесіндегі процесстер мен ағындар
- •3.3 Процесстермен жұмыс істеуге арнлаған api функциялар
- •4.2 Ағындарды синхрондау объектілері
- •Мьютекстер
- •5.1 Оқиғалар
- •5.2 Бұғатталған қосымша функциялар
- •7.1. Үймелер
- •7.2 Үйме жадысын басқару
- •8.1 Файлдар мен каталогтарды басқару Файлдарды құру және ашу
- •8.2 Каталогтарды басқару
- •8.3 Файлдар мен каталогтар атрибуттарын алудың басқа әдістері
- •9.1 Файлдарды бұғаттау
- •9.2 Реестр
- •Экспорттелетін идентификаторды анық қосу
- •12.1 Стандартты құрылғылар және консольді енгізу- шығару
- •12.2 Асинхронды енгізу- шығару және аяқталу порттары
- •2.3 Лабораториялық сабақтардың жоспары
- •2.4 Оқытушының басқаруымен студенттің өзіндік жұмысы бойынша оқу жоспары (соөж) (45 сағат)
- •2.5 Студенттің өзіндік жұмысының сабақ жоспары (сөж) (45 сағат)
- •2.6 Өзін өзі тексеру үшін кілтпен көрсетілген тестік жаттығулар
- •2.7 Курс бойынша емтихан сұрақтары
- •Глоссарий
- •Жүйелік программалау
8.2 Каталогтарды басқару
Каталогтарды құру немесе өшіру екі жай функциялармен орындалады.
BOOL CreateDirectory ( LPCTSTR lpszPath,
LPSECURITY_ATTRIBUTES lpsa) ;
BOOL RemoveDirectory (LPCTSTR lpszPath)
lpszPath құрылу немесе өшірілуі керек каталогтың аты, аяқтайтын нолі бар жолға нұсқайды. Екінші өлшем (қауіпсіздік атрибуттары) әзірге NULL-ға тең болуы керек. Бос каталогты ғана өшіруге болады.
Бұл функция каталогты орнатады:
BOOL SetCurrentDirectory (LPCTSTR lpszCurDir)
Келесі функция программистпен тапсырылған буферге толық анық жолды қайтарады.
DWORD GetCurrentDirectory (DWORD cchCurDir,
LPTSTR lpszCurDir)
Қайтарылатын мән: егер жеткілікті үлкен болмаса, буфердің талап ету өлшемі; сәтсіздікте ноль болады.
Параметрлері
cchCurDir — каталогтың аты үшін буфердің символдық ұзындығы (немесе байттық). Ұзындық аяқтайтын нолдік символды ескеру қажет.
Файлдық жүйенің мүмкіншіліктері тізбекті өңдеумен шектелмейді; олар сонымен бірге тікелей қатынау, файлдың бұғатталуын, каталогтармен жұмысты және файл атрибуттарын басқаруды қамтамасыз етеді.
Файл нұсқағыштары
Windows файлда байттың орналасуын белгілейтін және әрбір ашық файл үшін файл нұсқағышын қолданады. Келесі WriteFile немесе ReadFile операциясы файлға немесе сондай тәртіппен файлдан деректердің тізбекті ауысуын бастайды және файл нұсқағышын берілген байт мөлшеріне үлкейтеді. CreateFile функциясымен файл ашылға кезде, нұсқағыш оқу мен жазудың келесі операциясымен алға жылжиды және файл басына нұсқап, нолденеді. Файлға тікелей қатынас құру үшін біріншіден, файл нұсқағышын ерікті позицияға орнату мүмкіндігі керек. Ол үшін SetFilePointer функциясы арналған.
Берілген функция Windows-тың 64-разрядты NTFS жүйесімен қалай жұмыс жасайтынын көрсетеді. Бірақ бұл әдістемелік кешен SetFilePointer үшін әрқашан дұрыс келмейді, сондықтан SetFilePointer-ды кішірек файлдарға қолданған жөн.
DWORD SetFilePointer (HANDLE hFile,
LONG lDistanceToMove, PLONG lpDistanceToMoveHigh,
DWORD dwMoveMethod);
Қайтарылатын мән: файлдың жаңа нұсқағышының кішкентай бөлігі (таңбасыз DWORD). Жаңа нұсқағыштың үлкен бөлігі lpDistanceToMoveHigh (егер ол бос нұсқағыш болмаса) нұсқайтын DWORD мәніне беріледі. Қате болған жағдайда функция 0xFFFFFFFF мәнін қайтарады.
Параметрлері
hFile — оқу немесе жазу (немесе екі операция үшін) үшін рұқсаты бар ашық файлдың дескрипторы.
lDistanceToMove — нұсқағыш (long таңбамен) ауысатын мән немесе dwMoveMethod мәніне тәуелді файлдың орналасуы (таңбасыз).
lpDistanceToMoveHigh ауысу мәнінің үлкен бөлігіне нұсқайды. Егер осы нұсқағыш NULL-ге тең болса, онда функция ұзындығы 232-2-ден аспайтын файлдармен ғана жұмыс жасай алады. Бұл өлшем сонымен қатар файл нұсқағышының үлкен бөлігін қайтару үшін қолданылады. Кіші бөлігі – бұл функцияның қайтарылатын мәні.
dwMoveMethod ауысудың келесі бір режимін анықтайды:
FILE_BEGIN — жаңа нұсқағыштың орны (позиция) файл басынан есептеледі және DistanceToMove таңбасыз сан ретінде интерпретацияланады.
FILE_CURRENT — нұсқағыш бастапқы орыннан таңбалы сан ретінде интерпретацияланатын DistanceToMove анықтайтын алыс қашықтыққа алға немесе артқа ауысады. Дұрыс мәндер алға ауысуға сәйкес келеді.
FILE_END — орын файл соңынан алға немесе артқа есептелінеді.
Бұл функцияны файл соңынан нолдік ауысуды нұсқап, файл ұзындығын анықтау үшін қолдануға болады.
64-разрядты орынды көрсету әдісі қиындық тудыртады, өйткені функция файлдағы орын ретінде, сондай-ақ қателік код ретінде де қайтаруы мүмкін. Мысалы, файлдағы орын 232-1-ға (0xFFFFFFFF) тең және функция шақыруында сонымен бірге ауысудың үлкен бөлігі нұсқалған деп қарастырайық. Файлдағы шын орны ма немесе қатеге нұсқау ма екенін, қате жоқ болған уақытта NO_ERROR-ды қайтаратын GetLastError көмегімен функцияның не қайтаратынын анықтауға болады. Бұл ауысудың үлкен бөлігі көрсетілмеген кезде файл ұзындығы 232 - 2 байт мәнімен шектелетінін түсіндіреді.
Қиындықтың басқа себебі, ауысудың үлкен және кіші бөліктері бөлінген және әртүрлі өңделетінінде. Адрестің кіші бөлігі мәні бойынша беріледі және функцияның мәні ретінде қайтарылады, ал үлкені ссылка бойынша функцияға және одан беріледі.
Файлдың атрибуттары және каталогтармен жұмыс
Каталогта файлды және басқа каталогтарды іздеуге және файлдар атрибуттарын алуға болады. Ол үшін FindFirstFile функциясымен қайтарылатын іздеу дескрипторы керек. Керек файлды алу үшін FindNextFile функциясы қызмет жасайды, ал іздеуді аяқтау үшін – FindClose.
HANDLE FindFirstFile ( LPCSTSTR lpszSearchFile,
LPWIN32__FIND_DATA lpffd)
Қайтарылатын мән: іздеу дескрипторы. INVALID_HANDLE_VALUE сәтсіздікке нұсқайды.
FindFirstFile ат сәйкестігін файл арасынан, сонымен бірге каталог ішінен де іздейді. Қайтарылатын дескриптор келесі іздеуде қолданылады.
Параметрлері
lpszSearchFile (? и *) алмастырып қою таңбаларының құрамында болуы мүмкін каталогқа немесе толық атқа нұсқайды.
lpffd табылған файл немесе каталог туралы ақпараты бар WIN32_FIND_DATA құрылымына нұсқайды.
WIN32_FIND_DATA құрылымы келесі түрде анықталған:
typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes;
FILETIME ftCreationTime; FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime; DWORD nFileSizeHigh;
DWORD nFileSizeLow; DWORD dwReserved0;
DWORD dwReserved1; TCHAR cFileName [MAX_PATH];
TCHAR cAlternateFiiename [14];
} WIN32_FIND_DATA;
dwFileAttributes CreateFile бейнелеуінде келтірілген мәндерге сәйкестігін тексеруге болады. Ары қарай уақыттың үш мәні келеді (файлды құру уақыты, соңғы қатынау және соңғы жазба уақыты).
cFileName — бұл толық ат емес, файлдың өзінің аты.
cAlternateFile — 8.3 пішімдегі (нүктені қосқанда) DOS үшін файл атының версиясы. Windows сілтегішінде көрсетілетін файл атының қысқаруы. Екі атта нолмен аяқталатын жол.
? және * алмастырып қою таңбаларының құрамында бар образецті қанағаттандыратын каталогтан файлдардың атын табу жиі керек болады. Ол үшін ізделінді ат туралы ақпараты бар FindFirstFile-дан іздеу дескрипторын алу керек және FindNextFile функциясын шақыру керек.
BOOL FindNextFile ( HANDLE hFindFile,
LPWIN32_FIND_DATA lpffd)
Іздеу аяқталған соң, іздеу дескрипторын жабыңыз. Ол үшін CloseHandle функциясын пайдаланбаңыз.
Іздеу дескрипторын жабуға BOOL FindClose (HANDLE hFindFile) функциясы арналған.
GetFileInformationByHandle функциясы анықталған файл үшін оның ашық дескрипторына нұсқап, сол ақпаратты алуға рұқсат береді.