home *** CD-ROM | disk | FTP | other *** search
- /* 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
-