⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isrcsd.h

📁 ARM下加一个硬件驱动比较复杂
💻 H
字号:







#include <pkfuncs.h>
#define USER_IOCTL(X) (IOCTL_KLIB_USER + (X))
#define IOCTL_ISRCSD_INFO USER_IOCTL(20)
#define IOCTL_ISRCSD_UNLOAD USER_IOCTL(21)

typedef struct __CAN_RPACKET
{
	UCHAR ff;
	UCHAR id1;
	UCHAR id2;
	UCHAR id3;
	UCHAR id4;
	UCHAR data[8];
}CAN_RPACKET;

typedef struct  __DataBuffer
{
    DWORD dwBufferSize;
    DWORD dwWaterMark;
    DWORD dwFIFO_In;
    DWORD dwFIFO_Out;
    CAN_RPACKET  bBuffer[1];
} DataBuffer;

typedef volatile DataBuffer * PDataBuffer;

__inline static DWORD GetDataSize(PDataBuffer pReceiveBuffer)
{
    register DWORD dwFIFO_In=pReceiveBuffer->dwFIFO_In,dwFIFO_Out=pReceiveBuffer->dwFIFO_Out;
    if (dwFIFO_In<dwFIFO_Out) 
        return (dwFIFO_In+pReceiveBuffer->dwBufferSize - dwFIFO_Out);
    else
        return (dwFIFO_In - dwFIFO_Out);
}
__inline static DWORD GetAvailableBuffer(PDataBuffer pReceiveBuffer)
{
    register DWORD dwFIFO_In=pReceiveBuffer->dwFIFO_In,dwFIFO_Out=pReceiveBuffer->dwFIFO_Out;
    if (dwFIFO_In<dwFIFO_Out) 
        return (dwFIFO_Out-dwFIFO_In);
    else
        return (dwFIFO_Out +pReceiveBuffer->dwBufferSize - dwFIFO_In);
}
__inline static DWORD IncIndex(PDataBuffer pReceiveBuffer,DWORD dwIndex)
{
    return (dwIndex+13<pReceiveBuffer->dwBufferSize)?dwIndex+13:0;

}
//#define MAX_INTERRUPT_EVENT 0x10

typedef struct _ISRCSE_INFO{
    PVOID pBlockPhysAddr;
    DWORD dwBlockSize; 
    DWORD SysIntr;
    PBYTE pIoAddress;
 //   DWORD dwReceiveHWWaterMaker;
 //   DWORD uMultiplier;
//    DWORD bIntrBypass;
    DWORD dwEventIndex;//处理到的EVENT序号
//    DWORD dwEventCount; //EVENT数量
//    BYTE  iirEventArray[MAX_INTERRUPT_EVENT];
	BYTE IntFlag;
    DWORD InBufferOffset;
    DWORD OutBufferOffset;

} ISRCSD_INFO; 


typedef volatile ISRCSD_INFO   * PISRCSD_INFO; 

extern "C" {
DWORD CreateInstance(  void  );
BOOL IOControl(
    DWORD   InstanceIndex,
    DWORD   IoControlCode, 
    LPVOID  pInBuf, 
    DWORD   InBufSize,
    LPVOID  pOutBuf, 
    DWORD   OutBufSize, 
    LPDWORD pBytesReturned
    ) ;
DWORD ISRHandler(
    DWORD InstanceIndex
    );
void DestroyInstance(
    DWORD InstanceIndex 
    );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -