📄 candrv.c
字号:
/* OEMHexDisplayDrv.c - Intel IXP425 HEX Display source file */
/*
* Copyright (c) 2001 Intel Corporation, All Rights
* Reserved. The information contained herein is proprietary and
* confidential to Intel Communications Europe. Unauthorised
* use is STRICTLY FORBIDDEN.
*/
/* includes */
#include "OEMHexDisplayDrv.h"
/* defines */
volatile WORD *v_pHexDisp = NULL;
extern PVOID VirtualAllocCopy(unsigned size,char *str,PVOID pVirtualAddress);
#ifdef BOOTLOADER_BLD
#define IXP425_HEX_SWAP(x) (x)
#else
#define IXP425_HEX_SWAP(x) (WORD)(((x)<< 8) | ((x)>>8))
#endif
#define IXP425_HEX_DISP_WRITE(dispPtr,val) \
(*((volatile WORD *)(dispPtr)) = IXP425_HEX_SWAP((val)))
/******************************************************************************
*
* OEMHexDispInit - allocates pages in virtual memory space for HEX display
*
*
* RETURNS: N/A
*******************************************************************************/
void canInit(PVOID Context)
{
UNREFERENCED_PARAMETER(Context);
if (v_pHexDisp == NULL)
{
v_pHexDisp = (volatile WORD *) VirtualAllocCopy(sizeof(WORD),
(char *)TEXT("HexDisplayDriver: IXDP425_7SEG_BASE_U_VIRTUAL"),
(PVOID)IXDP425_7SEG_BASE_U_VIRTUAL);
}
DEBUGMSG(1,(TEXT("OEMHexDispInit:v_pHexDisp value: 0x%x."),v_pHexDisp));
}
/******************************************************************************
*
* OEMHexDispDeInit - de-allocates pages in virtual memory space for HEX display
*
*
* RETURNS: N/A
*******************************************************************************/
void OEMHexDispDeInit(DWORD dwContext)
{
UNREFERENCED_PARAMETER(dwContext);
if (v_pHexDisp)
{
VirtualFree((PVOID)v_pHexDisp,0,MEM_RELEASE);
v_pHexDisp = NULL;
}
DEBUGMSG(1,(TEXT("OEMHexDispDeInit:v_pHexDisp value: 0x%x."),v_pHexDisp));
}
/******************************************************************************
*
* OEMHexDispWrite - writes value which will be displayed on HEX display.
*
*
* RETURNS: N/A
*******************************************************************************/
void canWrite(DWORD value)
{
IXP425_HEX_DISP_WRITE(v_pHexDisp, (WORD)value);
}
void canRead(DWORD value)
{
IXP425_HEX_DISP_WRITE(v_pHexDisp, (WORD)value);
}
/******************************************************************************
*
* DllEntry - entry point for DLL
*
*
* RETURNS: TRUE as a success.
*******************************************************************************/
BOOL
DllEntry(
HANDLE hDllHandle,
DWORD dwReason,
LPVOID lpreserved
)
{
static UINT uiRefCount = 0;
BOOL bRc = TRUE;
HANDLE hProcess = GetCurrentProcess();
UNREFERENCED_PARAMETER(hDllHandle);
UNREFERENCED_PARAMETER(lpreserved);
switch (dwReason) {
case DLL_PROCESS_ATTACH:
{
DEBUGMSG(1, (TEXT("Hex Display loaded by process 0x%lx"),hProcess));
if (uiRefCount == 0)
{
canInit(hProcess);
}
uiRefCount++;
}
break;
case DLL_PROCESS_DETACH:
{
DEBUGMSG(1, (TEXT("Hex Display unloaded by process 0x%lx"),hProcess));
uiRefCount--;
if (uiRefCount == 0)
{
canDeInit((DWORD)hProcess);
}
}
break;
default:
break;
}
return bRc;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -