📄 tgtbuff.h
字号:
#ifndef ___TGTBUFF_H
#define ___TGTBUFF_H
#include <vmem.h>
#include <lvmem.h>
#include <lvvxd.h>
#include <dsydef.h>
#include <lvpackon.h>
/*
#define TgtBuffer_First 0x00
#define TgtBuffer_WinVga 0x00
#define TgtBuffer_Vga_1 0x01
#define TgtBuffer_Vga_2 0x02
#define TgtBuffer_Vga_3 0x03
#define TgtBuffer_CPU 0x04
#define TgtBuffer_RPS 0x05
#define TgtBuffer_LMK 0x06
#define TgtBuffer_Last 0x07
*/
class LvTargetBuffer {
private:
protected:
LvMem *Memory;
LvMemory *Mem;
LvVxdBufferInfo Info;
HDEVICE TheBoard;
U8BIT *hCpu;
U8BIT *hMVFCpu;
U8BIT BufferId;
U8BIT DeviceNr;
int SubGrb;
#ifdef __WIN3264__
HANDLE hOvEvent;
OVERLAPPED Ov;
ULONG *Irp;
ULONG TgtBufferMaxIrp;
HANDLE hMemFile;
#endif
#ifdef __UNIX__
FILE *hFile;
#endif
LVRAWPTR _TheDMABuffer;
#ifdef __UNIX__
U32BIT *PageMap;
U32BIT *PageMap4Mb;
#else
LVRAWPTR *PageMap;
LVRAWPTR *PageMap4Mb;
#endif
int NrPageMap4Mb;
U32BIT PageTableSize;
U32BIT PageTableOffset;
U32BIT DefaultSize;
U32BIT MemType;
U32BIT BigUserBufferChunk;
void GetDeviceNr(void);
void GetFMBParam(LvGrabberNode *TheGrb, U8BIT aBufferId, int UseBufferId=TgtBuffer_Invalid);
void UnlockBuffer(void);
public:
LvTargetBuffer(HDEVICE aBoard=HANDLE_INVALID, LvGrabberNode *TheGrb=NULL, int aSubGrb=0);
LvTargetBuffer(int BufferId, HDEVICE aBoard=HANDLE_INVALID, LvGrabberNode *TheGrb=NULL, int aSubGrb=0, int UseBufferId=TgtBuffer_Invalid);
~LvTargetBuffer(void);
void SetBufferId(int BufferId, int UseBufferId=TgtBuffer_Invalid);
LVSTATUS AllocBuffer(U32BIT NewSize, U32BIT *OldSize=NULL, U32BIT *AllocatedSize=NULL, BOOL Adjust=TRUE);
#ifdef __UNIX64__
unsigned long GetHandle(void) { return Info.Handle; }
U8BIT _Huge_ *GetX86Pointer(void);
LVRAWPTR GetPhysicalAddress(void) { return Info.Physical; }
LVRAWPTR GetLinearAddress(void) { return Info.Linear; }
unsigned long GetSize(void) { return Info.Size; }
unsigned long GetPageTableLinear(void) { return Info.LinPageTable; }
BOOL IsContiguos(void) { return Info.IsContiguos; }
#else
U32BIT GetHandle(void) { return Info.Handle; }
U8BIT _Huge_ *GetX86Pointer(void);
U32BIT GetPhysicalAddress(void) { return Info.Physical; }
U32BIT GetLinearAddress(void) { return Info.Linear; }
U32BIT GetSize(void) { return Info.Size; }
U32BIT GetPageTableLinear(void) { return Info.LinPageTable; }
BOOL IsContiguos(void) { return Info.IsContiguos; }
#endif
U32BIT GetPageMap4Mb(int Which);
U32BIT GetPhysicalAddressCam4M(void);
LVSTATUS GetBufferOwnership(HANDLE *hMem, U32BIT *Size=0, U32BIT *DataOffset=0);
LVSTATUS ReleaseBuffer(HANDLE hMem);
};
#include <lvpackof.h>
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -