📄 lvhwuser.h
字号:
#ifndef ___LVHWUSER_H
#define ___LVHWUSER_H
// Actual driver version
// #define _LVPPXVER_ 0x21E
#include <lvppxver.h>
//
// Define the maximum number of Pci controllers
// that this driver will support.
//
#define MAXIMUM_PCI_DEV_PER_MACHINE 128
#ifndef _NTDDK_
#ifndef __UNIX__
#include <devioctl.h>
#endif
#define PCI_TYPE0_ADDRESSES 6
#define PCI_TYPE1_ADDRESSES 2
#define PCI_TYPE2_ADDRESSES 5
typedef struct _PCI_COMMON_CONFIG {
USHORT VendorID; // (ro)
USHORT DeviceID; // (ro)
USHORT Command; // Device control
USHORT Status;
UCHAR RevisionID; // (ro)
UCHAR ProgIf; // (ro)
UCHAR SubClass; // (ro)
UCHAR BaseClass; // (ro)
UCHAR CacheLineSize; // (ro+)
UCHAR LatencyTimer; // (ro+)
UCHAR HeaderType; // (ro)
UCHAR BIST; // Built in self test
union {
struct _PCI_HEADER_TYPE_0 {
ULONG BaseAddresses[PCI_TYPE0_ADDRESSES];
ULONG CIS;
USHORT SubVendorID;
USHORT SubSystemID;
ULONG ROMBaseAddress;
ULONG Reserved2[2];
UCHAR InterruptLine; //
UCHAR InterruptPin; // (ro)
UCHAR MinimumGrant; // (ro)
UCHAR MaximumLatency; // (ro)
} type0;
struct _PCI_HEADER_TYPE_1 {
ULONG BaseAddresses[PCI_TYPE1_ADDRESSES];
UCHAR PrimaryBus;
UCHAR SecondaryBus;
UCHAR SubordinateBus;
UCHAR SecondaryLatency;
UCHAR IOBase;
UCHAR IOLimit;
USHORT SecondaryStatus;
USHORT MemoryBase;
USHORT MemoryLimit;
USHORT PrefetchBase;
USHORT PrefetchLimit;
ULONG PrefetchBaseUpper32;
ULONG PrefetchLimitUpper32;
USHORT IOBaseUpper16;
USHORT IOLimitUpper16;
UCHAR CapabilitiesPtr;
UCHAR Reserved1[3];
ULONG ROMBaseAddress;
UCHAR InterruptLine;
UCHAR InterruptPin;
USHORT BridgeControl;
} type1;
struct _PCI_HEADER_TYPE_2 {
ULONG SocketRegistersBaseAddress;
UCHAR CapabilitiesPtr;
UCHAR Reserved;
USHORT SecondaryStatus;
UCHAR PrimaryBus;
UCHAR SecondaryBus;
UCHAR SubordinateBus;
UCHAR SecondaryLatency;
struct {
ULONG Base;
ULONG Limit;
} Range[PCI_TYPE2_ADDRESSES-1];
UCHAR InterruptLine;
UCHAR InterruptPin;
USHORT BridgeControl;
} type2;
} u;
UCHAR DeviceSpecific[192];
} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;
typedef enum _INTERFACE_TYPE {
If_InterfaceTypeUndefined = -1,
If_Internal,
If_Isa,
If_Eisa,
If_MicroChannel,
If_TurboChannel,
If_PCIBus,
If_VMEBus,
If_NuBus,
If_PCMCIABus,
If_CBus,
If_MPIBus,
If_MPSABus,
If_ProcessorInternal,
If_InternalPowerBus,
If_PNPISABus,
If_PNPBus,
If_MaximumInterfaceType
}INTERFACE_TYPE, *PINTERFACE_TYPE;
typedef struct _PHYSICAL_ADDRESS {
ULONG Lo;
LONG Hi;
} PHYSICAL_ADDRESS;
#endif
#ifdef _MSC_VER
#pragma pack(1)
#endif
typedef struct _tagLvHwPciInfo {
ULONG BusNumber;
ULONG DevNumber;
ULONG FnNumber;
PCI_COMMON_CONFIG PciCfg;
UCHAR DeviceName[21];
} LvHwPciInfo, *PLvHwPciInfo;
typedef struct _tagLvHwAllPciInfo {
UCHAR NrPciDevice;
LvHwPciInfo PciDevice[MAXIMUM_PCI_DEV_PER_MACHINE];
} LvHwAllPciInfo, *PLvHwAllPciInfo;
// 33222222 22221111 11111100 00000000
// 10987654 32109876 54321098 76543210
// -----------------------------------
// uuuuuuuu uuuuuuuu uuuuuuSS RMXuPPPP
//
// u = unused
// P = protocol
// R = Read/write flag
// M = mask flag
// X = stop flag
// S = data size
// Flags
#define LvHw_Read 0x00
#define LvHw_Write 0x80
#define LvHw_Mask 0x40
#define LvHw_Stop 0x20
// Protocol
#define LvHw_Direct 0x00
#define LvHw_I2C 0x01
#define LvHw_Debi 0x02
#define LvHw_LCA 0x03
#define LvHw_ICS 0x04
#define LvHw_BNPar 0x05
#define LvHw_BNSer 0x06
#define LvHw_JTag 0x07
// Data size
#define LvHw_8Bit 0x000
#define LvHw_16Bit 0x100
#define LvHw_32Bit 0x200
// Field Mask definition
#define LvHw_SizeMask 0x300
#define LvHw_ProtocolMask 0x0f
#define _DefaultCPUBufferSize 32
typedef struct _tagLvHwScriptItem {
ULONG Access;
ULONG Address;
ULONG Value;
ULONG Mask;
} LvHwScriptItem;
typedef struct _tagLvHwSetCounter {
UCHAR WhichCounter;
UCHAR CounterId;
} LvHwSetCounter, *PLvHwSetCounter;
typedef struct _tagLvHwLMKParam {
USHORT BmpLine;
USHORT LmkLine;
USHORT Height;
USHORT Invert;
} LvHwLMKParam;
typedef struct _tagPrvMemInfo {
INTERFACE_TYPE InterfaceType; // Isa, Eisa, etc....
ULONG BusNumber; // Bus number
PHYSICAL_ADDRESS BusAddress; // Bus-relative address
ULONG AddressSpace; // 0 is memory, 1 is I/O
ULONG Length; // Length of section to map
} PrvMemInfo;
// PrvSync definitions
#define LvHw_SyncT_Fld0 0x010
#define LvHw_SyncT_Fld1 0x020
#define LvHw_SyncT_Any 0x000
#define LvHw_SyncCmd_Live 0x100
#define LvHw_SyncCmd_Freeze 0x200
#define LvHw_SyncCmd_None 0x000
typedef struct _tagLvIntQueueData {
ULONG Irq[4];
ULONG TimeStamp[2];
USHORT DmaIdx[16];
ULONG Reserved[2];
} LvIntQueueData;
#ifdef _MSC_VER
#pragma pack()
#endif
#ifndef __UNIX__
// device type - we are a multimedia device, so for now we will be a sound device
#define DD_TYPE_LVHW FILE_DEVICE_SOUND
// base for IOCTL requests - just above the sound requests
#define IOCTL_LVHW_BASE 0x300
// Ioctl set
//--- configuration ------
// Sets size, format of captured data. <IN CONFIG_INFO>
// #define IOCTL_LVHW_CONFIG_FORMAT CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Set up source video (NTSC/PAL, source...) <IN CONFIG_INFO>
// #define IOCTL_LVHW_CONFIG_SOURCE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x2, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Set up live display config. <IN CONFIG_INFO>
// #define IOCTL_LVHW_CONFIG_DISPLAY CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x3, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get Pci info. <OUT LvHwAllPciInfo>
#define IOCTL_LVHW_PCI_INFO CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Run script. <IN OUT LvHwScriptItem[]>
#define IOCTL_LVHW_SCRIPT CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x2, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get Perf data. <IN OUT ULONG[]>
#define IOCTL_LVHW_GETPERFDATA CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x3, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Set counter. <IN OUT ULONG[]>
#define IOCTL_LVHW_SETCOUNTER CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x4, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get LMK Page. <OUT ULONG>
#define IOCTL_LVHW_GETLMKPAGE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x5, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Set LMK Param < IN LvHwLMKParam >
#define IOCTL_LVHW_SETLMKPARAM CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x6, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Update lock mask < IN Bmp buffer > NOTE: Use output!!!
#define IOCTL_LVHW_UPDATELMK CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x7, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
// Disable lock mask < >
#define IOCTL_LVHW_DISABLELMK CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x8, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get CPU Page. <OUT ULONG>
#define IOCTL_LVHW_GETCPUPAGE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x9, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Update CPU Page < IN CPU buffer > NOTE: Use output!!!
#define IOCTL_LVHW_UPDATECPUPAGE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0xa, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
// Lock user buffer < IN CPU buffer > NOTE: Use output!!!
#define IOCTL_LVHW_LOCKBUFFER CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0xb, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
// Unlock user buffer < IN CPU buffer > NOTE: Use output!!!
#define IOCTL_LVHW_UNLOCKBUFFER CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0xc, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
// Get RPS Page. <OUT ULONG>
#define IOCTL_LVHW_GETRPSPAGE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0xd, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Copy Rps code. <IN ULONG[]>
#define IOCTL_LVHW_SETRPSCODE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0xe, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get Last int mask. <OUT ULONG[4] -> 0=ISR 1=PSR 2=SSR 3=IER>
#define IOCTL_LVHW_GETLASTINT CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0xf, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_LVHW_SETINTEVENT CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x10, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Poke Rps code. <IN ULONG[2] 0=Offset 1=Value>
#define IOCTL_LVHW_POKERPSCODE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x11, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get Physical Address of the input buffer. <IN OUT ULONG[2]> 0=InLinear 1=OutPhysical
#define IOCTL_LVHW_GETPHYSICALADDRESS CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x12, METHOD_BUFFERED, FILE_ANY_ACCESS)
// #define _LVPPXVER_ 0x150
// Report status data. <IN OUT ULONG[Nr]>
#define IOCTL_LVHW_REPORTSTATUS CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x13, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Dump Rps code. <IN OUT ULONG[]>
#define IOCTL_LVHW_DUMPRPSCODE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x14, METHOD_BUFFERED, FILE_ANY_ACCESS)
// #define _LVPPXVER_ 0x15A
// Get CPU Size. <OUT ULONG>
#define IOCTL_LVHW_GETCPUSIZE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x15, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get RPS Size. <OUT ULONG>
#define IOCTL_LVHW_GETRPSSIZE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x16, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Lock user buffer and update CPU page < IN CPU buffer > NOTE: Use output!!!
#define IOCTL_LVHW_LOCKBUFFERUPDATE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x17, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
// #define _LVPPXVER_ 0x15B
// #define _LVPPXVER_ 0x160
// #define _LVPPXVER_ 0x200
// Map io/mem to user space < IN PrvMemInfo > < Out ptr >
#define IOCTL_LVHW_MAPIOMEM CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x18, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_LVHW_PRVIO CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x19, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Wait video sync < IN ULONG > < OUT ULONG Timeout >
#define IOCTL_LVHW_PRVSYNC CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1a, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Peek Rps code. <IN ULONG Offset OUT ULONG Value>
#define IOCTL_LVHW_PEEKRPSCODE CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1b, METHOD_BUFFERED, FILE_ANY_ACCESS)
// #define _LVPPXVER_ 0x210
#define IOCTL_LVHW_WAITINT CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1c, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Map io/mem to user space < IN ptr >
#define IOCTL_LVHW_UNMAPIOMEM CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1d, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get IrQ page ptr < OUT ULONG ptr >
#define IOCTL_LVHW_GETIRQPAGEPTR CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1e, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Reset RS232 fifo < IN ULONG >
#define IOCTL_LVHW_SER_RESET CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x1f, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Get RS232 chars < OUT UCHAR ptr >
#define IOCTL_LVHW_SER_GETCHARS CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x20, METHOD_BUFFERED, FILE_ANY_ACCESS)
// Send RS232 chars < IN UCHAR ptr >
#define IOCTL_LVHW_SER_SENDCHARS CTL_CODE(DD_TYPE_LVHW, IOCTL_LVHW_BASE+0x21, METHOD_BUFFERED, FILE_ANY_ACCESS)
#endif // ndef __UNIX__
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -