亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? can.cpp

?? CAN總線驅動程序
?? CPP
字號:
// CAN.cpp : Defines the entry point for the DLL application.
//


#include <windows.h>
#include <nkintr.h>
#include <ceddk.h>

#include "stdafx.h"
#include "can.h"
#include "spi.h"
#include "mcp2515.h"
#include <pkfuncs.h>


CAN_CTRL_BLK_t CAN_CtrlBlk;


BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
			OutputDebugString(L"can driver - DLL_PROCESS_ATTACH \n");
			break;
		case DLL_THREAD_ATTACH:
//			OutputDebugString(L"can driver - DLL_THREAD_ATTACH \n");
			break;
		case DLL_THREAD_DETACH:
//			OutputDebugString(L"can driver - DLL_THREAD_DETACH \n");
			break;
		case DLL_PROCESS_DETACH:
			OutputDebugString(L"can driver - DLL_PROCESS_DETACH \n");
			break;
    }
    return TRUE;
}


static DWORD WINAPI CAN0_IntrThread(LPVOID pContext)
{
	DWORD dwRet;

	while (!CAN_CtrlBlk.abortThread0) 
	{
		dwRet = WaitForSingleObject(CAN_CtrlBlk.hIntr0Event, INFINITE);
		if (CAN_CtrlBlk.abortThread0)
			return 0;

		SetEvent(CAN_CtrlBlk.hRx0Event);

		InterruptDone(CAN_CtrlBlk.can0Intr);
	}

	DEB_0(1, _T(" exiting IST\r"));
	
	return 0;
}



extern "C"  DWORD CAN_Init(LPCTSTR pContext, LPCVOID lpvBusContext)
{
	DWORD IrqCan0 = IRQ_EINT8;
	DWORD IrqCan1 = IRQ_EINT9;

    RETAILMSG (1, (TEXT("+ ")TEXT(__FUNCTION__)TEXT("\r\n")));
	
	SPI_Init(SPI_PORT_0);

	MCP2515_Init(CAN_125kbps);

	CAN_CtrlBlk.hIntr0Event = CreateEvent(NULL, FALSE, FALSE, NULL);
	CAN_CtrlBlk.hRx0Event = CreateEvent(NULL, FALSE, FALSE, NULL);

	KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, 
						&IrqCan0, 
						sizeof(DWORD), 
						&CAN_CtrlBlk.can0Intr, 
						sizeof(DWORD), 
						NULL);

	InterruptDisable(CAN_CtrlBlk.can0Intr);

	InterruptInitialize(CAN_CtrlBlk.can0Intr, CAN_CtrlBlk.hRx0Event, NULL, 0);

	CAN_CtrlBlk.hCan0Thread = CreateThread(NULL, 
							  0, 
							  (LPTHREAD_START_ROUTINE)CAN0_IntrThread, 
							  NULL, 
							  0, 
							  NULL);

    DEBUGMSG (1, (TEXT("- ")TEXT(__FUNCTION__)TEXT("\r\n")));

	return TRUE;
}

extern "C"  BOOL CAN_Deinit(DWORD hDeviceContext)
{
    DEBUGMSG (1, (TEXT("+ ")TEXT(__FUNCTION__)TEXT("\r\n")));

	SPI_Deinit(SPI_PORT_0);

	if (CAN_CtrlBlk.hCan0Thread)
	{
		CAN_CtrlBlk.abortThread0 = TRUE;
		SetEvent(CAN_CtrlBlk.hIntr0Event);
		SetEvent(CAN_CtrlBlk.hRx0Event);
		Sleep(200);
	}

	// Release interrupt resource
	InterruptDone(CAN_CtrlBlk.can0Intr);
	
	InterruptDisable(CAN_CtrlBlk.can0Intr);

	KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR,
					&CAN_CtrlBlk.can0Intr,
					sizeof(DWORD),
					NULL,
					0,
					NULL);
	
	CloseHandle(CAN_CtrlBlk.hIntr0Event);
	CloseHandle(CAN_CtrlBlk.hRx0Event);

    DEBUGMSG (1, (TEXT("- ")TEXT(__FUNCTION__)TEXT("\r\n")));
	
	return TRUE;
}

extern "C"  DWORD CAN_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode)
{
    DEBUGMSG (1, (TEXT("+ ")TEXT(__FUNCTION__)TEXT("\r\n")));

	SPI_Open(SPI_PORT_0);
	
	//SetEvent(g_hTxEvent);	
	ResetEvent(CAN_CtrlBlk.hRx0Event);	


    DEBUGMSG (1, (TEXT("- ")TEXT(__FUNCTION__)TEXT("\r\n")));
	return 1;
}

extern "C"  BOOL CAN_Close(DWORD hOpenContext)
{
    DEBUGMSG (1, (TEXT("+ ")TEXT(__FUNCTION__)TEXT("\r\n")));

	SPI_Close(SPI_PORT_0);
	
	SetEvent(CAN_CtrlBlk.hRx0Event);	

	DEBUGMSG (1, (TEXT("- ")TEXT(__FUNCTION__)TEXT("\r\n")));
	return TRUE;
}

extern "C"  DWORD CAN_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
    DEBUGMSG (1, (TEXT("+ ")TEXT(__FUNCTION__)TEXT("\r\n")));

	DWORD dwRet;
	LPCVOID pReadBuffer;

	if ((pBuffer == NULL) || (Count <= 0))
		return 0;

	pReadBuffer = MapPtrToProcess((UCHAR *)pBuffer, GetCallerProcess());

	dwRet = WaitForSingleObject(CAN_CtrlBlk.hRx0Event, CAN_RW_TIMEOUT);
	
	if (dwRet == WAIT_TIMEOUT) 
		return 0;
	ResetEvent(CAN_CtrlBlk.hRx0Event);

	MCP2515_Read((CAN_MSG_t *)pBuffer);

    DEBUGMSG (1, (TEXT("- ")TEXT(__FUNCTION__)TEXT("\r\n")));
	return Count;
}

extern "C"  DWORD CAN_Write(DWORD hOpenContext, LPCVOID pBuffer, DWORD Count)
{
    DEBUGMSG (1, (TEXT("+ ")TEXT(__FUNCTION__)TEXT("\r\n")));

//	DWORD dwRet;
	LPCVOID pWriteBuffer;

	if ((pBuffer == NULL) || (Count <= 0))
		return 0;

	pWriteBuffer = MapPtrToProcess((UCHAR *)pBuffer, GetCallerProcess());

//	dwRet = WaitForSingleObject(g_hTxEvent, CAN_RW_TIMEOUT);
//	if (dwRet == WAIT_TIMEOUT)
//	{
//		return 0;
//	}
//	ResetEvent(g_hTxEvent);

	MCP2515_Write((CAN_MSG_t *)pWriteBuffer);

    DEBUGMSG (1, (TEXT("- ")TEXT(__FUNCTION__)TEXT("\r\n")));
	return Count;
}

extern "C" BOOL CAN_IOControl(HANDLE pCAN, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut,
								DWORD dwLenOut, PDWORD pdwActualOut)
{
    BOOL  bRc = TRUE;
       
    return bRc;
}

extern "C"  ULONG CAN_Seek(PVOID Context, LONG Position, DWORD Type)
{
    return (ULONG)-1;
}

extern "C"  BOOL CAN_PowerUp(PVOID Context)
{
    return TRUE;
}


extern "C"  BOOL CAN_PowerDown(PVOID Context)
{
	return TRUE;
}

//////////////////////////////////////////////////////
// Functions below for internal using
//////////////////////////////////////////////////////


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美日韩黄色大片| 国产精品理论片在线观看| 福利视频网站一区二区三区| 亚洲国产另类av| 国产精品国产三级国产三级人妇| 91福利社在线观看| 成人激情免费网站| 国产美女av一区二区三区| 午夜久久久久久久久久一区二区| 18欧美亚洲精品| 欧美国产精品中文字幕| 久久久精品黄色| 精品久久99ma| 日韩精品一区二区三区视频| 欧美电影在线免费观看| 色婷婷综合中文久久一本| 99久久久久久| 97久久人人超碰| 一本色道a无线码一区v| av高清不卡在线| 不卡区在线中文字幕| 99热在这里有精品免费| 成人午夜电影小说| 国产一区二区在线看| 日韩黄色一级片| 美腿丝袜亚洲色图| 国产又粗又猛又爽又黄91精品| 毛片不卡一区二区| 精品一区二区三区不卡 | 精品中文av资源站在线观看| 日韩影院在线观看| 午夜免费久久看| 蜜桃精品在线观看| 国产精品一区专区| 成人免费看视频| 色网综合在线观看| 91麻豆精品国产91久久久久久 | 婷婷成人综合网| 蜜桃精品在线观看| 国产成人av资源| 欧美亚洲综合久久| 欧美成人国产一区二区| 国产精品私人影院| 一区二区三区中文字幕电影| 手机精品视频在线观看| 六月丁香婷婷色狠狠久久| 福利一区二区在线观看| 欧美日韩国产经典色站一区二区三区 | 欧美国产综合一区二区| 综合欧美一区二区三区| 午夜视频在线观看一区| 国产尤物一区二区| 在线亚洲免费视频| 久久综合久久综合久久| 一区二区三区欧美亚洲| 日韩经典一区二区| 色综合久久精品| 欧美tickling网站挠脚心| 亚洲乱码日产精品bd| 久久成人av少妇免费| 91免费在线视频观看| 日韩精品最新网址| 亚洲靠逼com| 国产老女人精品毛片久久| 欧美日韩精品一区二区三区四区 | 国产欧美日韩激情| 无码av中文一区二区三区桃花岛| 国产麻豆精品95视频| 欧美午夜精品一区| 欧美韩国日本一区| 麻豆精品一二三| 欧美制服丝袜第一页| 国产欧美一区二区在线| 日韩国产精品久久| 日本乱码高清不卡字幕| 久久精品视频在线看| 亚洲国产成人va在线观看天堂| 粉嫩一区二区三区性色av| 日韩欧美的一区二区| 亚洲电影你懂得| 99久久亚洲一区二区三区青草| 日韩精品一区二区三区视频播放 | 中文字幕一区二区三区在线不卡| 麻豆免费精品视频| 日本电影亚洲天堂一区| 日本一区二区视频在线| 日韩精品一二三区| 欧美日韩中文字幕一区二区| 亚洲欧美偷拍另类a∨色屁股| 国产精品99精品久久免费| 日韩限制级电影在线观看| 亚洲一级二级在线| 在线观看网站黄不卡| 亚洲色图一区二区三区| 99精品欧美一区二区蜜桃免费| 国产视频一区二区在线观看| 天堂久久久久va久久久久| 国产精品一区二区在线观看网站| 欧美日韩国产一二三| 亚洲一级二级三级| 欧美日韩一区久久| 亚洲第一狼人社区| 欧美挠脚心视频网站| 日韩成人av影视| 欧美精品xxxxbbbb| 日欧美一区二区| 欧美在线综合视频| 亚洲r级在线视频| 日韩欧美专区在线| 国产一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产成人综合在线观看| 国产欧美日韩在线看| 不卡在线视频中文字幕| 一个色综合av| 欧美一区二区三区四区高清| 久久电影网电视剧免费观看| 久久久久久久久久美女| 91视频免费播放| 亚洲午夜久久久| 日韩精品专区在线| 风间由美中文字幕在线看视频国产欧美 | 精品一区二区三区av| 国产精品无码永久免费888| 91麻豆国产自产在线观看| 婷婷亚洲久悠悠色悠在线播放 | 久久精品国产99| 久久婷婷色综合| 91麻豆国产福利精品| 亚洲成a人在线观看| 欧美精品一区二区三区高清aⅴ| 成人高清视频免费观看| 五月天久久比比资源色| 久久久av毛片精品| 91免费看片在线观看| 免费久久99精品国产| 亚洲三级免费电影| 久久免费午夜影院| 欧美猛男超大videosgay| 国产69精品久久777的优势| 日韩激情中文字幕| 亚洲黄色小视频| 国产婷婷一区二区| 在线观看欧美日本| 风间由美一区二区三区在线观看| 五月综合激情婷婷六月色窝| 成人欧美一区二区三区白人| 国产日韩精品一区二区三区 | 麻豆国产精品官网| 蜜臀av性久久久久蜜臀aⅴ四虎 | 91精品在线观看入口| 欧美天堂一区二区三区| 欧洲精品一区二区三区在线观看| 99re视频精品| 色老头久久综合| 欧美亚洲动漫精品| 欧美群妇大交群中文字幕| 欧美精品久久一区| 日韩三级免费观看| 欧美精品一区二区三区高清aⅴ | 亚洲色图在线看| 亚洲免费高清视频在线| 亚洲国产精品麻豆| 日本不卡123| 国产乱淫av一区二区三区| 丁香婷婷综合激情五月色| av激情综合网| 欧美亚洲国产一区在线观看网站| 欧美日韩视频在线观看一区二区三区| 精品1区2区3区| 日韩欧美不卡在线观看视频| 久久蜜臀精品av| 亚洲欧洲精品一区二区三区不卡| 亚洲一区二区在线观看视频| 午夜精品久久久久久久久久久| 久久99精品久久久久| 成人激情动漫在线观看| 欧美专区在线观看一区| 精品免费国产二区三区| 亚洲欧洲日本在线| 麻豆精品一区二区综合av| 成人av网站免费观看| 欧美午夜精品免费| 国产午夜精品久久久久久免费视| 中文字幕一区三区| 美女视频网站黄色亚洲| 成人h动漫精品一区二区| 欧美日韩一区二区欧美激情| 精品国一区二区三区| 亚洲久草在线视频| 国产美女精品在线| 欧美天堂一区二区三区| 国产日韩影视精品| 日日夜夜精品视频免费| 成人激情小说乱人伦| 欧美精品在线观看播放| 国产精品免费av| 国产一区二区在线看| 欧美日韩亚洲综合| 国产精品久久久久久一区二区三区 |