Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodychka-lab_OS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

Додаток 4

Текст програми відкриття глобального атома.

.386

.model flat, stdcall

option casemap:none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\user32.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

wsprintfA PROTO C :DWORD, :VARARG

wsprintf equ <wsprintfA>

.data

MsgCaption db "Повiдомлення!",0

MyAtom DWORD 0

AtomName db "Привіт Атом",0

MyAtomName db "Iм’я атома",0

ErrorFindAtom db "Атома з таким iм'ям не iснує",0

ErrorDA db "Помилка знищення атома",0

Success db "Атом успiшно знайдено",0

SuccessDA db "Aтом успiшно знищено",0

AtomCaption db "Значення атома в таблицi атомiв",0

buffer db 256 dup (?)

parameter db "%u"

.code

start:

invoke GlobalFindAtom,addr AtomName

.if eax==0

invoke MessageBox, NULL,addr ErrorFindAtom, addr MsgCaption, MB_OK

jmp exit

.endif

mov MyAtom, eax

invoke MessageBox, NULL,addr Success, addr MsgCaption, MB_OK

invoke wsprintf,addr buffer,addr parameter,MyAtom

invoke MessageBox, NULL, addr buffer, addr AtomCaption, MB_OK

invoke GlobalGetAtomName, MyAtom,addr buffer,256

invoke MessageBox, NULL ,addr buffer, addr MyAtomName, MB_OK

invoke GlobalDeleteAtom, MyAtom

.if eax==0

invoke MessageBox, NULL,addr SuccessDA,\

addr MsgCaption, MB_OK

jmp exit

.endif

invoke MessageBox, NULL,addr ErrorDA, addr MsgCaption, MB_OK

exit:

invoke ExitProcess,NULL

end start

Р езультат виконання програми:

Додаток 5 Детальний опис функції створення анонімного каналу

CreatePipe proto pReadHandle:DWORD, \

pWriteHandle:DWORD, \

pPipeAttributes:DWORD, \

nBufferSize:DWORD

pReadHandle – це вказівник на змінну типу DWORD, котрий отримає дескриптор кінця читання каналу.

pWriteHandle - це вказівник на змінну типу DWORD, котрий отримає дескриптор кінця запису каналу.

pPipeAttributes – вказує на структуру SECURITY_ATTRIBUTES

Додаток 6 Детальний опис функції створення іменованого каналу

CreateNamedPipe proto lpName:DWORD,\ ; вказує на ім’я файлу

dwOpenMode:DWORD, \; режим відкриття каналу

dwPipeMode:DWORD, \ ; pipe-specific modes

nMaxInstances:DWORD,\;максимальна кількість екземплярів каналу

nOutBufferSize: DWORD, \;розмір буферу для виводу

nInBufferSize : DWORD,\ ;розмір буферу для вводу

nDefaultTimeOut : DWORD,\; час тривання екземпляра каналу

lpSecurityAttributes LPSECURITY_ATTRIBUTES <> ;вказівник на структуру безпеки

Параметр lpName вказує на стрічку, котра завершується нулем і має наступний вигляд: \\.\pipe\pipename. Ім’я каналу не повинно перевищувати 256 символів.

Параметр dwOpenMode має наступні типи:

PIPE_ACCESS_DUPLEX – канал має двонаправлений тип. Клієнт та сервер можуть читати та записувати з каналу. Цей режим дає серверу такий самий як GENERIC_READ | GENERIC_WRITE доступ до каналу. Клієнт може встановити параметри GENERIC_READ або GENERIC_WRITE, або обидва, під час під’єднання до каналу функцією CreateFile.

PIPE_ACCESS_INBOUND - Потік даних направлений тільки від клієнта до сервера. Цей режим дає серверу такий самий доступ до каналу як GENERIC_READ. Клієнт – програма повинна мати GENERIC_WRITE доступ до каналу..

PIPE_ACCESS_OUTBOUND – Потік даних напрямлений тільки від сервера до клієнта . Цей режим дає серверу такий самий доступ до каналу як GENERIC_WRITE. Клієнт – програма повинна мати GENERIC_READ доступ до каналу..

Параметр dwPipeMode визначає параметри запису, параметри очікування.

PIPE_TYPE_BYTE – Діні записуються у канал як потік байтів .

PIPE_TYPE_MESSAGE - Діні записуються у канал як потік повідомлень

PIPE_WAIT - Встановлено режим очікування. В цьому режимі функції ReadFile, WriteFile, або ConnectNamedPipe не виконуються поки є дані для зчитування, дані для запису або до каналу під’єднаний клієнт.

PIPE_NOWAIT – Знято режим очікування.

Параметр nMaxInstances визначає максимальну кількість екземплярів каналу, може бути встановленим у PIPE_UNLIMITED_INSTANCES – необмежена кількість екземплярів каналу.

Дана функція повертає дескриптор на екземпляр іменованого файлу програми- сервера. У випадку помилки функція повертає INVALID_HANDLE_VALUE. За допомогою функції GetLastError можна дізнатись номер помилки, по якому можна знайти причину її виникнення. Помилка ERROR_INVALID_PARAMETER виникає у випадку коли параметр nMaxInstances є більшим ніж PIPE_UNLIMITED_INSTANCES.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]