152 lines
5.5 KiB
C
152 lines
5.5 KiB
C
/* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
|
|
#if __SC__ || __RCC__
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifndef __DPMI_H
|
|
#define __DPMI_H 1
|
|
|
|
#if __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#pragma pack()
|
|
|
|
typedef struct TINFO
|
|
{
|
|
unsigned short BufferSize;
|
|
void __far * (*RealModeSaveFunction)(unsigned short Operation,void __far *Buffer);
|
|
void __far * (*PModeSaveFunction)(unsigned short Operation,void __far *Buffer);
|
|
}
|
|
Info_t;
|
|
|
|
typedef struct TMEMINFO
|
|
{
|
|
unsigned long LargestContiguousBlock;
|
|
unsigned long MaxunloackedPageAllocation;
|
|
unsigned long MaxLoackedPageAllocation;
|
|
unsigned long PagesOfLinearSpace;
|
|
unsigned long TotalUnlockedPages;
|
|
unsigned long TotalFreePages;
|
|
unsigned long TotalPhysicalPages;
|
|
unsigned long FreePagesOfLinearSpace;
|
|
unsigned long SizeOfPagingPartition;
|
|
unsigned long Reserved[3];
|
|
}
|
|
MemInfo_t;
|
|
|
|
typedef struct TSWITCHTABLE
|
|
{
|
|
unsigned short newDS;
|
|
unsigned short newES;
|
|
unsigned short newSS;
|
|
unsigned short newCS;
|
|
unsigned long newIP; /* upper 16 bits invalid in 16-bit mode */
|
|
unsigned long newSP; /* upper 16 bits invalid in 16-bit mode */
|
|
}
|
|
SwitchTable_t;
|
|
|
|
typedef struct TSWITCHFUNCTION
|
|
{
|
|
void __far * (*RealModeSwitchFunction)(void __far *SwitchTable);
|
|
void __far * (*PModeSwitchFunction)(void __far *SwitchTable);
|
|
}
|
|
SwitchFunction_t;
|
|
|
|
typedef struct TENVIRON
|
|
{
|
|
unsigned char MajorVersion;
|
|
unsigned char MinorVersion;
|
|
unsigned short Flags;
|
|
unsigned char ProcessorType;
|
|
unsigned char MasterPICInterrupt;
|
|
unsigned char SlavePICInterrupt;
|
|
}
|
|
Environ_t;
|
|
|
|
typedef struct TLINEAR
|
|
{
|
|
unsigned long Handle;
|
|
unsigned long LinearAddress;
|
|
}
|
|
Linear_T;
|
|
|
|
#pragma pack(__DEFALIGN)
|
|
|
|
/* descriptor management services */
|
|
short dpmi_IsRealMode(void);
|
|
short dpmi_AllocLDTDescriptors(unsigned short count);
|
|
short dpmi_SegToDescriptor(unsigned short segment);
|
|
short dpmi_FreeDescriptor(unsigned short segment);
|
|
short dpmi_GetNextDescriptorIncrement(void);
|
|
void __far * dpmi_GetBaseAddress(unsigned short segment);
|
|
short dpmi_SetBaseAddress(unsigned short segment,void __far *linearaddr);
|
|
short dpmi_SetSegLimit(unsigned short segment,unsigned long linearlen);
|
|
short dpmi_SetDescriptorRights(unsigned short segment,unsigned short rights);
|
|
short dpmi_CreateCodeSegAlias(unsigned short segment);
|
|
void __far * dpmi_GetDescriptor(unsigned short segment,void __far *descriptortable);
|
|
void __far * dpmi_SetDescriptor(unsigned short segment,void __far *descriptortable);
|
|
short dpmi_AllocThisLDTDescriptor(unsigned short segment);
|
|
|
|
/* dos memory management services */
|
|
short dpmi_DOSAlloc(unsigned short paragraphs,void __far *results);
|
|
short dpmi_DOSFree(unsigned short segment);
|
|
short dpmi_DOSRealloc(unsigned short segment,unsigned short paragraphs,void __far *results);
|
|
|
|
/* interrupt services */
|
|
void __far * dpmi_GetRealModeVector(unsigned short vector);
|
|
short dpmi_SetRealModeVector(unsigned short vector,void __far *handler);
|
|
void __far * dpmi_GetExceptionHandler(unsigned short exception);
|
|
short dpmi_SetExceptionHandler(unsigned short exception,void __far *handler);
|
|
void __far * dpmi_GetProtectedModeVector(unsigned short exception);
|
|
short dpmi_SetProtectedModeVector(unsigned short exception,void __far *handler);
|
|
|
|
/* translation services */
|
|
void __far * dpmi_SimRealModeInterrupt(unsigned short vector,unsigned short flags,unsigned short commonstack,void __far *callstruct);
|
|
void __far * dpmi_CallRealModeProcWithFarRet(unsigned short flags,unsigned short commonstack,void __far *callstruct);
|
|
void __far * dpmi_CallRealModeProcWithIRet(unsigned short flags,unsigned short commonstack,void __far *callstruct);
|
|
void __far * dpmi_RealModeCallBackAlloc(void __far *funcptr,void __far *callstruct);
|
|
short dpmi_RealModeCallBackFree(void __far *realmodefuncptr);
|
|
short dpmi_GetStateSaveRestoreInfo(void __far *statesavestruct);
|
|
short dpmi_GetRawModeSwitchInfo(void __far *switchstruct);
|
|
short dpmi_GetVersionInfo(void __far *versionstruct);
|
|
short dpmi_GetFreeMemInfo(void __far *freememstruct);
|
|
short dpmi_MemBlockAlloc(unsigned long size,void __far *newmemstruct);
|
|
short dpmi_MemBlockFree(unsigned long memhandle);
|
|
short dpmi_MemBlockRealloc(unsigned long size,unsigned long memhandle,void __far *newmemstruct);
|
|
|
|
/* page locking services */
|
|
short dpmi_LockLinearRegion(void __far *regionptr,unsigned long regionsize);
|
|
short dpmi_UnlockLinearRegion(void __far *regionptr,unsigned long regionsize);
|
|
short dpmi_LockRealModeRegion(void __far *regionptr,unsigned long regionsize);
|
|
short dpmi_UnlockRealModeRegion(void __far *regionptr,unsigned long regionsize);
|
|
unsigned long dpmi_IsPageSize(void);
|
|
|
|
/* demand paging performance tuning */
|
|
short dpmi_MarkAsDemandPage(void __far *regionptr,unsigned long regionsize);
|
|
short dpmi_DiscardPage(void __far *regionptr,unsigned long regionsize);
|
|
|
|
/* physical address mapping */
|
|
short dpmi_IsLinearAddress(void __far *physicalptr,unsigned long regionsize);
|
|
|
|
/* virtual interrupt state functions */
|
|
short dpmi_DisableVirtualInterruptState(void);
|
|
short dpmi_EnableVirtualInterruptState(void);
|
|
short dpmi_IsVirtualIntteruptState(void);
|
|
|
|
/* vendor specific extensions */
|
|
void __far * dpmi_GetVendorAPI(char __far *zstringvendorname);
|
|
|
|
/* debug support */
|
|
short dpmi_SetDebugWatchPoint(void __far *regionptr,short watchpointsize,short watchpointtype);
|
|
short dpmi_ClearDebugWatchPoint(short watchpointhandle);
|
|
short dpmi_IsDebugWatchPointState(short watchpointhandle);
|
|
short dpmi_ResetDebugWatchPoint(short watchpointhandle);
|
|
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|