Индекс семафора задается параметром функции.
int SignalSemaphore(long SemaphoreHandle);
Индекс семафора задается параметром функции.
Функция возвращает 0 при успешном завершении или код ошибки:
Код ошибки |
Значение |
0x01 |
Переполнение семафора, значение семафора стало больше 127 |
0xFF |
Неправильное значение индекса семафора |
Для работы с семафорами можно использовать функцию C5h прерывания INT21h. В зависимости от содержимого регистра AL эта функция выполняет ту или иную операцию с семафором.
Открытие семафора:
На входе: |
AH |
= |
C5h; |
|
AL |
= |
00h; |
|
DS:DX |
= |
Адрес имени семафора; |
|
CL |
= |
Начальное значение семафора. |
На выходе: |
AL |
= |
Код ошибки или 0, если операция завершилась без ошибок. |
Определение состояния семафора:
На входе: |
AH |
= |
C5h; |
|
AL |
= |
01h; |
|
CX,DX |
= |
Индекс семафора; |
На выходе: |
AL |
= |
Код ошибки или 0, если операция завершилась без ошибок; |
|
CX |
= |
Значение семафора; |
|
DL |
= |
Счетчик использований семафора. |
Уменьшение значения семафора:
На входе: |
AH |
= |
C5h; |
|
AL |
= |
02h; |
|
CX,DX |
= |
Индекс семафора; |
|
BP |
= |
Время ожидания. |
На выходе: |
AL |
= |
Код ошибки или 0, если операция завершилась без ошибок. |
Увеличение значения семафора:
На входе: |
AH |
= |
C5h; |
|
AL |
= |
03h; |
|
CX,DX |
= |
Индекс семафора. |
На выходе: |
AL |
= |
Код ошибки или 0, если операция завершилась без ошибок. |
Закрытие семафора:
На входе: |
AH |
= |
C5h; |
|
AL |
= |
04h; |
|
CX,DX |
= |
Индекс семафора. |
На выходе: |
AL |
= |
Код ошибки или 0, если операция завершилась без ошибок. |
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий