Процедуры и функции модуля DPMI
AllocateDescriptors
AllocDosMemoryBlock
AllocRealModeCallBack
AllocateSpecificDescriptor
CallRealModeFar
CallRealModeIRet
ClearRmRegs
CreateCodeAlias
CreateCodeDescriptor
CreateDataAlias
CreateDataDescriptor
DosMemoryAlloc
DosMemoryFree
FarGetByte
FarGetDWord
FarGetWord
FarPutByte
FarPutDWord
FarPutWord
FreeDescriptor
FreeDosMemoryBlock
FreePhysicalMap
FreeRealModeCallBack
GetCS
GetDisableInterruptState
GetDPMIIntVec
GetDPMIVer
GetDS
GetEnableInterruptState
GetExceptionHandler
GetFreeMemoryInfo
GetInterruptState
GetRealModeIntVec
GetSegmentBaseAddress
GetSelectorAccessRights
MapPhysicalToLinear
RealModeInt
ResizeDosMemoryBlock
SegmentToDescriptor
SelectorInc
SetDPMIIntVec
SetExceptionHandler
SetRealModeIntVec
SetSelectorAccessRights
SetSelectorBaseAddress
SetSelectorLimit
Функция AllocateDescriptors
Эта функция используется для назначения одного или более дескрипторов
из задания Таблицы Размещения Дескрипторов - Local Descriptor Table
(LDT). Назначаемый дескриптор(ы) должен быть инициализирован в
приложении.
Объявление:
function AllocateDescriptors(NumberOfDescriptors: Word): Word;
Замечания:
Возвращает базовый селектор при успешном выполнении и ноль в противном
случае.
См. также:
FreeDescriptor
Функция AllocDosMemoryBlock
Эта функция назначает блок памяти из общей свободной памяти DOS. Она
возвращает оба сегмента реального режима и один или более дескрипторов,
которые могут быть использованы приложением защищенного режима для
доступа к блоку памяти.
Объявление:
function AllocDOSmemoryBlock(SizeInBytes: DWord): DWord;
Замечания:
Возвращает значение параграф-сегмент в старшем слове и селектор в
младшем слове, если операция выполнена успешно. Иначе возвращает ноль.
См. также:
FreeDosMemoryBlock
ResizeDosMemoryBlock
Функция AllocRealModeCallBack
Эта функция используется для получения уникального адреса реального
режима SEG:OFFSET, который будет передавать управление из реального
режима процедуре защищенного режима.
Объявление:
function AllocateRealModeCallBack(HandlerAddr, RegsAddr: Pointer;
var HndSeg: Word;
var HndOfs: DWord): Boolean;
Замечания:
Возвращает TRUE, если операция выполнена успешно.
См. также:
FreeRealModeCallBack
Функция AllocateSpecificDescriptor
Эта функция используется для назначения одного указанного дескриптора LTD.
Объявление:
function AllocateSpecificDescriptor(Selector: Word): Boolean;
Замечания:
Возвращает TRUE, если операция выполнена успешно.
См. также:
FreeDescriptor
Функция CallRealModeFar
Эта функция вызывает процедуру реального режима. Вызванная процедура
должна выполнить дальнее возвращение, когда она завершается.
Объявление:
function CallRealModeFar(var Regs: TRmRegs): Boolean;
Замечания:
Возвращает TRUE, если операция выполнена успешно.
См. также:
Тип TRmRegs
Функция CallRealModeIRet
Эта функция вызывает процедуру реального режима. Вызванная процедура
должна выполнить команду IRET, когда она завершается.
Объявление:
function CallRealModeIRet(var Regs: TRmRegs): Boolean;
Замечания:
Возвращает TRUE, если операция выполнена успешно.
См. также:
Тип TRmRegs
Процедура ClearRmRegs
Эта процедура очищает (заполняет нулями) регистры реального режима.
Вы должны сделать это перед вызовом какой-либо функции, использующей
реальный режим!
Объявление:
procedure ClearRmRegs(var Regs: TRmRegs);
См. также:
RealModeInt
Тип TRmRegs
Функция CreateCodeAlias
Эта функция создаст дескриптор кода, который имеет такие же базу и
лимит, как указанный дескриптор сегмента кода.
Объявление:
function CreateCodeAlias(Selector: Word): Word;
Замечания:
Возвращает псевдоним (алиас) дескриптора, если функция завершилась успешно.
Функция CreateCodeDescriptor
Эта функция используется для размещения одного дескриптора кода из
Локальной Таблицы Дескрипторов - Local Descriptor Table (LDT) с
указанными Базой (Base) и Лимитом (Limit).
Объявление:
function CreateCodeDescriptor(Base, Limit: DWord): Word;
Замечания:
Возвращает селектор кода в случае успешного выполнения. Иначе
возвращает ноль.
См. также:
FreeDescriptor
Функция CreateDataAlias
Эта функция создает дескриптор кода, который имеет такие же базу и
лимит, как определено в дескрипторе сегмента кода.
Объявление:
function CreateDataAlias(Selector: Word): Word;
Замечания:
Возвращает псевдоним (алиас) селектора, если функция завершилась
успешно. Иначе возвращает ноль.
См. также:
FreeDescriptor
Функция CreateDataDescriptor
Эта функция используется для размещения одного дескриптора данных из
Локальной Таблицы Дескрипторов - Local Descriptor Table (LDT) с
указанными Базой (Base) и Лимитом (Limit).
Объявление:
function CreateDataDescriptor(Base, Limit: DWord): Word;
Замечания:
Возвращает селектор данных в случае успешного выполнения. Иначе
возвращает ноль.
См. также:
FreeDescriptor
Функция DosMemoryAlloc
Эта функция выделит блок памяти из свободной DOS памяти. Она
возвращает только сегмент реального режима выделенного DOS блока
памяти.
Объявление:
function DOSMemoryAlloc(SizeInBytes: DWord): Word;
Замечания:
Возвращает значение сегмента, если выполнена успешно. Иначе возвращает ноль.
Чтобы получить доступ к выделенной памяти, вы должны умножить возвращенный параграф-сегмент на 16.
Пример:
function
MkDOSPointer (Segment: Word): Pointer;
begin
Result := DWord(Segment)*16;
end.
Эта функция делает указатель защищенного режима на данный сегмент
выделенного DOS блока памяти.
См. также:
DosMemoryFree
Функция DosMemoryFree
Эта функция освобождает память, которая была выделена с помощью
функции
DosMemoryAlloc.
Объявление:
function DOSMemoryFree(Segment: Word): Boolean;
Замечания:
Возвращает TRUE если выполнение прошло успешно.
Функции
DosMemoryAlloc и
DosMemoryFree используют прерывание
INT 21h.
См. также:
DosMemoryAlloc
Функция FarGetByte
Возвращает значение байта из указанного смещения указанного сегмента
защищенного режима (селектора).
Объявление:
function FarGetByte(Seg: Word; Offs: DWord): Byte;
См. также:
FarGetDWord
FarGetWord
FarPutByte
FarPutDWord
FarPutWord
Функция FarGetDWord
Возвращает значение двойного слова (dword) из указанного смещения
указанного сегмента защищенного режима (селектора).
Объявление:
function FarGetDWord(Seg: Word; Offs: DWord): DWord;
См. также:
FarGetByte
FarGetWord
FarPutByte
FarPutDWord
FarPutWord
Функция FarGetWord
Возвращает значение слова из указанного смещения указанного сегмента
защищенного режима (селектора).
Объявление:
function FarGetWord(Seg: Word; Offs: DWord): Word;
См. также:
FarGetByte
FarGetDWord
FarPutByte
FarPutDWord
FarPutWord
Процедура FarPutByte
Помещает значение байта в указанное смещение указанного сегмента
защищенного режима (селектор).
Объявление:
procedure FarPutByte(Seg: Word; Offs: DWord; Value: Byte);
См. также:
FarGetByte
FarGetDWord
FarGetWord
FarPutDWord
FarPutWord
Процедура FarPutDWord
Помещает значение двойного слова в указанное смещение указанного
сегмента защищенного режима (селектор).
Объявление:
procedure FarPutDWord(Seg: Word; Offs: DWord; Value: DWord);
См. также:
FarGetByte
FarGetDWord
FarGetWord
FarPutByte
FarPutWord
Процедура FarPutWord
Помещает значение слова в указанное смещение указанного сегмента
защищенного режима (селектор).
Объявление:
procedure FarPutWord(Seg: Word; Offs: DWord; Value: Word);
См. также:
FarGetByte
FarGetDWord
FarGetWord
FarPutByte
FarPutDWord
Функция FreeDescriptor
Эта функция используется для освобождения дескрипторов, которые были
назначены с помощью функции
AllocateDescriptors.
Объявление:
function FreeDescriptor(Selector: Word): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
AllocateDescriptors
AllocateSpecificDescriptor
CreateCodeDescriptor
CreateDataDescriptor
Функция FreeDosMemoryBlock
Эта функция освобождает память, которая была выделена с помощью
функции
AllocDosMemoryBlock.
Объявление:
function FreeDOSMemoryBlock(Selector: Word): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
AllocDosMemoryBlock
ResizeDosMemoryBlock
Функция FreePhysicalMap
Эта функция освобождает физическую область, которая была назначена с
помощью функции
MapPhysicalToLinear.
Объявление:
function FreePhysicalMap(LinearAddr: DWord): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
MapPhysicalToLinear
Функция FreeRealModeCallBack
Эта функция освобождает адрес возврата реального режима, который был
назначен с помощью сервиса назначения адреса возврата реального режима.
Объявление:
function FreeRealModeCallBack(HndSeg: Word; HndOfs: DWord): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
AllocRealModeCallBack
Функция GetCS
Возвращает текущий сегмент кода.
Объявление:
function GetCS: Word;
См. также:
GetDS
Функция GetDisableInterruptState
Эта функция отключает флаг виртуального прерывания и возвращает
предыдущее состояние флага виртуального прерывания.
Объявление:
function GetDisableInterruptState: Boolean;
См. также:
GetEnableInterruptState
GetInterruptState
Функция GetDPMIIntVec
Эта функция возвращает селектор и смещение текущего обработчика
прерываний защищенного режима для указанного номера прерывания.
Объявление:
function GetDPMIIntVec(IntNo: Byte; var Sel: Word;
var Offs: DWord): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
SetDPMIIntVec
Функция GetDPMIVer
Возвращает версию поддерживаемых сервисов DPMI.
Объявление:
function GetDPMIVer: Word;
Замечания:
Возвращает версию поддерживаемых сервисов DPMI в случае успешного
выполнения. Иначе возвращает ноль.
Функция GetDS
Возвращает текущий сегмент кода.
Объявление:
function GetDS: Word;
См. также:
GetCS
Функция GetEnableInterruptState
Эта функция включает флаг виртуального прерывания и возвращает
предыдущее состояние флага виртуального прерывания.
Объявление:
function GetEnableInterruptState: Boolean;
См. также:
GetDisableInterruptState
GetInterruptState
Функция GetExceptionHandler
Эта функция возвращает указатель на текущий обработчик исключений
защищенного режима для указанного номера исключения.
Объявление:
function GetExceptionHandler(ExpFault: Byte; var Sel: Word;
var Offs: DWord): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
SetExceptionHandler
Функция GetFreeMemoryInfo
Эта функция предоставляется для того, чтобы приложения защищенного
режима могли определять, сколько памяти доступно. При выполнении DPMI,
который поддерживает виртуальную память, важно предусмотреть такие
вещи, как количество доступной физической памяти.
Объявление:
function GetFreeMemoryInfo (BufferPtr: Pointer): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
Функция GetInterruptState
Эта функция выключает возвращенное состояние флага виртуального
прерывания.
Объявление:
function GetInterruptState: Boolean;
См. также:
GetDisableInterruptState
GetEnableInterruptState
Функция GetRealModeIntVec
Эта функция возвращает значение текущих задач вектора прерываний
реального режима для указанного прерывания.
Объявление:
function GetRealModeIntVec(IntNo: Byte;
var RSeg,ROfs: Word): Boolean;
Замечания:
Возвращает сегмент и смещение обработчика прерываний реального режима.
См. также:
SetRealModeIntVec
Функция GetSegmentBaseAddress
Эта функция возвращает 32-битный линейный базовый адрес указанного
сегмента.
Объявление:
function GetSegmentBaseAddress(Selsctor: Word): DWord;
Замечания:
Возвращает 32-битный линейный базовый адрес сегмента, если выполнение
прошло успешно. Иначе возвращает ноль.
См. также:
GetSelectorAccessRights
SetSelectorAccessRights
SetSelectorBaseAddress
Функция GetSelectorAccessRights
Эта функция возвращает права доступа и тип полей дескриптора.
Объявление:
function GetSelectorAccessRights(Selector: Word): Word;
Замечания:
Возвращает права доступа, если выполнение прошло успешно. Иначе возвращает ноль.
См. также:
GetSegmentBaseAddress
SetSelectorAccessRights
SetSelectorBaseAddress
Функция MapPhysicalToLinear
Эта функция может быть использована при работе с драйверами устройств
для преобразования физического адреса в линейный адрес. Линейный адрес
затем можно использовать для доступа к памяти устройства.
Объявление:
function MapPhysicalToLinear (PhysAddr, SizeInBytes: DWord): DWord;
Замечания:
Возвращает указатель на линейный адрес, который может быть использован
для доступа к физической памяти. Иначе возвращает ноль.
См. также:
FreePhysicalMap
Функция RealModeInt
Эта функция моделирует прерывания в реальном режиме. Она вызывает
CS:IP, указанный при помощи вектора прерываний реального режима.
Обработчик должен возвратиться посредством выполнения команды IRET.
Объявление:
function RealModeInt(IntNo: Byte; var Regs: TRmRegs): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
Тип TRmRegs
ClearRmRegs
GetRealModeIntVec
SetRealModeIntVec
Функция ResizeDosMemoryBlock
Эта функция используется для увеличения или уменьшения блока памяти,
который был выделен с помощью функции
AllocDosMemoryBlock.
Объявление:
function ResizeDOSmemoryBlock(Selector: Word; NewSize: DWord): Boolean;
Замечания:
Возвращает TRUE, если выполнена успешно.
См. также:
AllocDosMemoryBlock
FreeDosMemoryBlock
Функция SegmentToDescriptor
Эта функция используется для преобразования сегментов реального режима
в дескрипторы, которые адресуются программами защищенного режима.
Объявление:
function SegmentToDescriptor(Segment: Word): Word;
Замечания:
Возвращает селектор, распределенный для сегмента реального режима, или ноль.
Функция SelectorInc
Некоторые функции, такие как распределение дескрипторов LDT и
распределение памяти DOS могут возвращать более одного дескриптора.
Вы должны вызвать эту функцию для определения значения, которое должно
быть добавлено к селектору для доступа к следующему дескриптору в
массиве.
Объявление:
function SelectorInc: Word;
Замечания:
При успешном завершении возвращает значение, которое нужно прибавить
для получения следующего селектора. Иначе возвращает ноль.
Функция SetDPMIIntVec
Эта функция устанавливает селектор и смещение обработчика прерываний
защищенного режима для указанного номера прерывания.
Объявление:
function SetDPMIIntVec(IntNo: Byte;
Sel: Word; Offs: DWord): Boolean;
Замечания:
Возвращает TRUE в случае успешного выполнения.
См. также:
GetDPMIIntVec
Функция SetExceptionHandler
Эта функция позволяет приложениям защищенного режима перехватывать
исключения процессора, которые не обрабатываются окружением DPMI.
Программы могут обратиться к исключениям, таким как ошибка
несуществующего сегмента, которые иначе произвели бы фатальную ошибку.
Объявление:
function SetExceptionHandler(ExpFault: Byte;
Sel: Word; Offs: DWord): Boolean;
Замечания:
Возвращает TRUE в случае успешного выполнения.
См. также:
GetExceptionHandler
Функция SetRealModeIntVec
Эта функция устанавливает значение вектора прерываний текущей задачи
реального режима для указанного прерывания.
Объявление:
function SetRealModeIntVec(IntNo: Byte; RSeg, ROfs: Word): Boolean;
Замечания:
Возвращает TRUE в случае успешного выполнения.
См. также:
GetRealModeIntVec
RealModeInt
Функция SetSelectorAccessRights
Эта функция позволяет программе защищенного режима изменять права
доступа и тип полей дескриптора.
Объявление:
function SetSelectorAccessRights(Selector,Rights: Word): Boolean;
Замечания:
Возвращает TRUE в случае успешного выполнения.
См. также:
GetSegmentBaseAddress
GetSelectorAccessRights
SetSelectorBaseAddress
SetSelectorLimit
Функция SetSelectorBaseAddress
Эта функция изменяет 32-битный линейный базовый адрес указанного
селектора.
Объявление:
function SetSelectorBaseAddress(Selector: Word; Base: DWord): Boolean;
Замечания:
Возвращает TRUE в случае успешного выполнения.
См. Также:
SetSelectorAccessRights
GetSegmentBaseAddress
GetSelectorAccessRights
SetSelectorLimit
Функция SetSelectorLimit
Эта функция устанавливает лимит для указанного сегмента.
Объявление:
function SetSelectorLimit(Selector: Word; Limit: DWord): Word;
Замечания:
Возвращает TRUE в случае успешного выполнения. Иначе возвращает ноль.
См. также:
GetSegmentBaseAddress
GetSelectorAccessRights
SetSelectorAccessRights
SetSelectorBaseAddress