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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? xrpci.c

?? wince 5.0下 實(shí)現(xiàn)PCI8串口卡驅(qū)動(dòng)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
////////////////////////////////////////
//(c) 2005 EXAR Corporation 
//All Rights Reserved.
//
//Exar Corporation ("Exar") hereby grants the User of this Exar 
//product-specific XR17C15x Windows CE.Net Device Driver (hereinafter 
//referred to as "Driver") a non-exclusive, nontransferable license 
//to use the Driver in accordance with the term set forth below.  
//Before using the Driver, the User should read the following use 
//restrictions.  If the User does not accept these terms, the Driver 
//should not be used or downloaded.
//The User is granted this limited license to use this Driver for 
//User's end product that includes the Exar XR17C158/XR17D158 Octal UART PCI 
//device, XR17C154/XR17D154 Quad UART PCI Device, and XR17C152/XR17D152 Dual UART 
//PCI Device and is not granted rights to sell, loan, rent, lease or 
//license the Driver, in whole or in part, or in modified form to anyone 
//other than User.  User may modify the Driver to suit its specific 
//applications but rights to derivative works and such modifications 
//shall belong to Exar.
//
//The Driver is provided on an "AS IS" basis and Exar makes absolutely 
//no warranty with respect to performance or the information contained 
//therein.  EXAR DISCLAIMS AND USER WAIVES ALL WARRANTIES, EXPRESS OR 
//IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A 
//PARTICULAR PURPOSE.  The entire risk as to Driver quality and 
//performance is with the User.  ACCORDINGLY, IN NO EVENT SHALL EXAR 
//BE LIABLE FOR ANY DAMAGES, WHETHER IN CONTRACT OR TORT, INCLUDING 
//ANY LOST PROFITS OR OTHER INCIDENTAL, CONSEQUENTIAL, EXEMPLARY, OR 
//PUNITIVE DAMAGES ARISING OUT OF THE USE OR APPLICATION OF THE DRIVER.  
//Further, Exar reserves the right to make changes tot eh Driver without 
//notice to improve reliability, function or design.  Exar does not 
//convey any license under patent rights or any other intellectual 
//property rights, including those of third parties.
//
//Exar is not obligated to provide maintenance or support for the Driver. 
//
////////////////////////////////////////////////////////
/*++


Module Name:

    xrpci.c

Abstract:

    Exar PCI UART card enumerator device driver

Notes:

	This driver loads to any of the Exar PCI cards (0x158/154/152 PIDs) and 
	enumerates each port on the card with the proper Memory and interrupt
	resources. This can be considered as a Bus Driver for the card.

--*/

#include <windows.h>
#include <devload.h>
#include <pm.h>
#include <nkintr.h>
#include <winioctl.h>
#include <ddkreg.h>

#include "xrpci.h"

#ifdef DEBUG

#define	DEBUGMASK(bit)		(1 << (bit))

#define	MASK_ERROR			DEBUGMASK(0)
#define	MASK_WARN			DEBUGMASK(1)
#define	MASK_INIT			DEBUGMASK(2)
#define	MASK_FUNCTION		DEBUGMASK(3)
#define	MASK_IOCTL			DEBUGMASK(4)
#define	MASK_DEVICE			DEBUGMASK(5)
#define	MASK_ACTIVITY		DEBUGMASK(6)

DBGPARAM dpCurSettings = {
    _T("PMSampleDev"), 
	{
		_T("Errors"), _T("Warnings"), _T("Init"), _T("Function"), 
		_T("Ioctl"), _T("Device"), _T("Activity"), _T(""),
		_T(""),_T(""),_T(""),_T(""),
		_T(""),_T(""),_T(""),_T("") 
	},
    MASK_ERROR | MASK_WARN | MASK_INIT | MASK_IOCTL | MASK_DEVICE
}; 

#define	ZONE_ERROR			DEBUGZONE(0)
#define	ZONE_WARN			DEBUGZONE(1)
#define	ZONE_INIT			DEBUGZONE(2)
#define	ZONE_FUNCTION		DEBUGZONE(3)
#define	ZONE_IOCTL			DEBUGZONE(4)
#define	ZONE_DEVICE			DEBUGZONE(5)
#define	ZONE_ACTIVITY		DEBUGZONE(6)

#endif


DWORD
XRP_Init(
    PVOID Context
    )
{
	DWORD dwStatus, dwType, dwSize;
	HKEY hkDevice;
	TCHAR szName[16];
	UCHAR i, dwPorts;

	HKEY hk;
	DWORD dwDisp, dwMemBase, dwSysIntr;
	WCHAR szLine[MAX_PATH];
	DWORD bMemLength;
	DWORD dwRegStride;

	DWORD dwPortInstanceOnChip;
			
	PXRPCI_INFO   pHWHead;

    UNREFERENCED_PARAMETER(Context);

    DEBUGMSG(ZONE_INIT, (_T("XRP_Init: context %s\n"), Context));

	// get our activation information
	dwStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR) Context, 0, 0, &hkDevice);
	if(dwStatus != ERROR_SUCCESS) 
	{
		DEBUGMSG(ZONE_ERROR, (_T("XRP_Init: OpenDeviceKey('%s') failed %u\r\n"), Context, dwStatus));
		return 0;
	}
	
	dwSize = sizeof(szName);
	dwStatus = RegQueryValueEx(hkDevice, DEVLOAD_DEVNAME_VALNAME, NULL, &dwType, (LPBYTE) szName, &dwSize);
	if(dwStatus != ERROR_SUCCESS || dwType != DEVLOAD_DEVNAME_VALTYPE) 
	{
		DEBUGMSG(ZONE_ERROR, (_T("XRP_Init: RegQueryValueEx('%s', '%s') failed %u\r\n"),
			Context, DEVLOAD_DEVNAME_VALNAME, dwStatus));
		RegCloseKey(hkDevice);
		return 0;
	}
	DEBUGMSG(ZONE_INIT, (_T("XRP_Init: device name is '%s'\r\n"), szName));
	RegCloseKey(hkDevice);

	// Get the PCI data
	
	// Allocate for our main data structure and one of it's fields.
	pHWHead = (PXRPCI_INFO)LocalAlloc( LMEM_ZEROINIT|LMEM_FIXED ,
									 sizeof(XRPCI_INFO) );
	if ( !pHWHead )
		return( 0 );

	if ( ! XRPCI_GetRegistryData(pHWHead, (LPCTSTR)Context) ) 
	{
		DEBUGMSG (ZONE_INIT|ZONE_ERROR,
				  (TEXT("XRPCI_GetRegistryData - Unable to read registry data.  Failing Init !!! \r\n")));
		return 0;
	}
	
	//
	// populate the ports based on the the Device ID
	//
	dwPorts = (UCHAR)(pHWHead->dwDeviceId & 0x0F);
	
	//
	// Memory space for each port 
	//
	bMemLength = 0x200;
	
	//
	// UART register stride (default = 1 byte).
	//
	dwRegStride = 1;
	
	DEBUGMSG(1, (_T("dwPorts = %d  \r\n"), dwPorts));

	for (i = 0; i < dwPorts; i++)	
	{
		//
		//we are ready for loading drivers for the ports, so update the registry
		//
		dwMemBase = pHWHead->dwMemBase + (i * 0x200);
		if( !KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &pHWHead->dwIrq, sizeof(pHWHead->dwIrq), &dwSysIntr, sizeof(dwSysIntr), NULL) )
		{
			//error just use the default System Interrupt ; This should not happen though...
			dwSysIntr = pHWHead->dwSysIntr;
		}

		wsprintf (szLine, L"Drivers\\BuiltIn\\PCI\\Template\\xrserial%d", i);
		if (ERROR_SUCCESS == RegCreateKeyEx (HKEY_LOCAL_MACHINE, szLine, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hk, &dwDisp)) 
		{
			RegSetValueEx (hk, L"SysInterrupt", 0, REG_DWORD, (BYTE *)&dwSysIntr, sizeof(DWORD));
			RegSetValueEx (hk, L"IRQ", 0, REG_DWORD, (BYTE *)&pHWHead->dwIrq, sizeof(DWORD));
			RegSetValueEx (hk, L"DevIndex", 0, REG_DWORD, (BYTE *)&pHWHead->dwDevIndex, sizeof(DWORD));
			RegSetValueEx (hk, L"InterfaceType", 0, REG_DWORD, (BYTE *)&pHWHead->dwInterfaceType, sizeof(DWORD));
			RegSetValueEx (hk, L"BusNumber", 0, REG_DWORD, (BYTE *)&pHWHead->dwBusNumber, sizeof(DWORD));
			RegSetValueEx (hk, L"MemBase", 0, REG_DWORD, (BYTE *)&dwMemBase, sizeof(DWORD));
			RegSetValueEx (hk, L"MemLength", 0, REG_DWORD, (BYTE*)&bMemLength, sizeof(DWORD));
			RegSetValueEx (hk, L"RegStride", 0, REG_DWORD, (BYTE *)&dwRegStride, sizeof(DWORD));
			RegSetValueEx (hk, L"IsrDll", 0, REG_SZ, (BYTE *)L"xrisr.dll", sizeof(L"xrisr.dll"));
			RegSetValueEx (hk, L"IsrHandler", 0, REG_SZ, (BYTE *)L"ISRHandler", sizeof(L"ISRHandler"));
			
			dwPortInstanceOnChip = i;
			RegSetValueEx (hk, L"PortInstanceOnChip", 0, REG_DWORD, (BYTE*)&dwPortInstanceOnChip, sizeof(DWORD));

			RegCloseKey (hk);
		}
		else
		{
			DEBUGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("Failed to set registry values; \r\n")));       
		}		
		

		//
		// Everything is set for the port driver, now Activate(Register) it.
		//
		pHWHead->hDevice[i] = ActivateDevice(szLine, 0);
		if (pHWHead->hDevice[i])
		{
			DEBUGMSG (ZONE_INIT, (TEXT("ActivateDeviceEx success !!! \r\n")));			
		}
		else
		{
			DEBUGMSG (ZONE_INIT|ZONE_ERROR, (TEXT("ActivateDeviceEx failure !!! \r\n")));
		}
	}

	pHWHead->dwTotalPortsActivated = i;
	
    DEBUGMSG(ZONE_INIT, (_T("XRP_Init: returning 0x%08x\r\n"), pHWHead));
	DEBUGMSG(1, (_T("XRP_Init: returning 0x%08x\r\n"), pHWHead));
	return ((DWORD)pHWHead); // return pHWHead. as this can be used in DeInit for Deactivating the port drivers
}


/*
 @doc EXTERNAL
 @func	BOOL | XRP_Deinit | De-initialize serial card.
 @parm DWORD | pHWHead | Context pointer returned from XRP_Init
 *
 @rdesc None.
 */
BOOL
XRP_Deinit(
    DWORD dwContext
    )
{
	PXRPCI_INFO   pHWHead = (PXRPCI_INFO)dwContext;
	DWORD i;

	if ( !pHWHead ) 
	{
        /* Can't do much without this */
        DEBUGMSG (ZONE_INIT|ZONE_ERROR,
                  (TEXT("XRP_Deinit can't find pHWHead\r\n")));
        SetLastError(ERROR_INVALID_HANDLE);
        return(FALSE);
    }

	if (pHWHead->dwTotalPortsActivated)
	{
		for(i = 0; i < pHWHead->dwTotalPortsActivated; i++)
		{
			DeactivateDevice(pHWHead->hDevice[i]);
		}
	}

	LocalFree(pHWHead);
    return TRUE;
}


BOOL
XRP_IOControl(
    DWORD  dwContext,
    DWORD  Ioctl,
    PUCHAR pInBuf,
    DWORD  InBufLen, 
    PUCHAR pOutBuf,
    DWORD  OutBufLen,
    PDWORD pdwBytesTransferred
   )
{
	//
	// we don't support any IOCTLs at this point

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区美女| 成人欧美一区二区三区黑人麻豆| 91美女福利视频| 岛国av在线一区| 粉嫩久久99精品久久久久久夜| 国产aⅴ综合色| 成人高清免费观看| av一区二区久久| 色婷婷国产精品| 欧美日韩免费一区二区三区| 欧美日韩一级视频| 337p亚洲精品色噜噜狠狠| 日韩视频一区二区三区在线播放| 欧美岛国在线观看| 欧美韩国日本综合| 亚洲一区二区三区激情| 日韩av午夜在线观看| 韩国女主播一区| 99久久久精品| 欧美日韩三级一区二区| 91麻豆精品国产91久久久 | 欧美电视剧在线看免费| 日韩精品中文字幕一区 | 波多野结衣亚洲一区| 色综合久久88色综合天天6| 欧美乱妇15p| 久久久亚洲欧洲日产国码αv| 国产精品美女久久久久aⅴ| 亚洲午夜久久久久久久久久久| 日韩国产在线一| 粉嫩久久99精品久久久久久夜| 在线观看日韩一区| 久久嫩草精品久久久精品| 亚洲欧美日韩综合aⅴ视频| 午夜精品福利一区二区三区av| 韩国中文字幕2020精品| 色婷婷综合久久久久中文| 精品久久一二三区| 亚洲一区视频在线观看视频| 极品少妇一区二区| 91黄色小视频| 国产人成一区二区三区影院| 亚洲一区在线电影| 成人午夜视频福利| 日韩精品一区二区三区视频播放 | 91啪九色porn原创视频在线观看| 欧美三区在线视频| 中文字幕中文字幕一区二区| 久久精品国内一区二区三区 | 亚洲午夜激情网页| 丁香啪啪综合成人亚洲小说| 欧美一区二区三区视频免费播放| 亚洲美女在线一区| 国产xxx精品视频大全| 欧美高清性hdvideosex| 亚洲人123区| 波多野结衣亚洲| 26uuu亚洲综合色欧美| 国产九色精品成人porny| 欧美午夜宅男影院| 国产精品无人区| 久久国产免费看| 制服丝袜av成人在线看| 一区二区三区日韩| 91在线一区二区| 亚洲欧洲av一区二区三区久久| 国产成a人亚洲| xfplay精品久久| 韩国视频一区二区| 久久一二三国产| 国产一区二区三区免费播放| 欧美一级欧美三级| 免费在线观看精品| 精品国产一区二区三区四区四| 日韩不卡手机在线v区| 欧美一级一区二区| 久久不见久久见免费视频1| 91精品国产一区二区三区| 日韩国产精品大片| 日韩免费视频一区| 国产真实乱偷精品视频免| 精品嫩草影院久久| 国产成人在线视频网址| 国产精品免费视频一区| 国产91丝袜在线播放九色| 国产欧美日韩另类一区| 岛国av在线一区| 一区二区三区精品久久久| 国产精品美女久久久久高潮| 成人黄页毛片网站| 亚洲欧洲国产专区| 欧美日免费三级在线| 麻豆91小视频| 中文成人av在线| 欧洲国内综合视频| 三级在线观看一区二区| 久久婷婷国产综合精品青草| 白白色 亚洲乱淫| 亚洲午夜免费福利视频| 日韩免费观看高清完整版 | 久草这里只有精品视频| 久久久综合视频| 97久久精品人人做人人爽 | 国产精品丝袜91| 91久久精品一区二区三| 免费观看在线色综合| 国产精品视频在线看| 欧美最新大片在线看| 久久99国内精品| 亚洲蜜臀av乱码久久精品| 欧美精品vⅰdeose4hd| 国产·精品毛片| 亚洲综合在线电影| 久久久午夜精品| 欧美日精品一区视频| 国产精品正在播放| 午夜精品一区在线观看| 中文字幕乱码日本亚洲一区二区| 欧美日韩国产首页| 成人91在线观看| 久久97超碰色| 亚洲国产精品久久不卡毛片| 国产欧美日韩综合精品一区二区| 欧美日韩亚洲不卡| 91视频.com| 国产精品一区二区在线观看网站 | 日本少妇一区二区| 亚洲免费观看高清完整版在线观看熊 | 精品一区二区三区av| 一区二区视频在线| 欧美激情艳妇裸体舞| 欧美成人aa大片| 欧美精品v国产精品v日韩精品 | 亚洲精品乱码久久久久久黑人| 精品国产一区a| 欧美一区二区三区视频免费播放| 91久久国产最好的精华液| gogo大胆日本视频一区| 国产精品性做久久久久久| 蜜臀av一级做a爰片久久| 亚洲黄色av一区| 亚洲黄色小说网站| 亚洲黄色小视频| 亚洲一区日韩精品中文字幕| 日韩美女视频一区| 国产精品不卡在线| 国产精品久久久久精k8 | 91色porny蝌蚪| 成人app在线观看| 国产精品123| 国产高清一区日本| 风间由美中文字幕在线看视频国产欧美| 日韩精品一二三| 美女脱光内衣内裤视频久久影院| 亚洲成a天堂v人片| 日韩**一区毛片| 日本成人在线电影网| 蜜桃久久精品一区二区| 精品一区二区三区蜜桃| 国产一区在线精品| 成人av集中营| 91蜜桃婷婷狠狠久久综合9色| 91亚洲国产成人精品一区二区三| 9久草视频在线视频精品| 日本道色综合久久| 欧美二区在线观看| 久久免费电影网| 中文字幕综合网| 午夜视频一区在线观看| 开心九九激情九九欧美日韩精美视频电影| 蓝色福利精品导航| yourporn久久国产精品| 欧美色老头old∨ideo| 91精品国产综合久久蜜臀| 久久亚洲欧美国产精品乐播| 国产精品久线在线观看| 亚洲一二三级电影| 经典三级一区二区| 不卡的av电影| 欧美日韩在线精品一区二区三区激情| 欧美妇女性影城| 国产三级精品在线| 亚洲国产精品影院| 国产激情91久久精品导航| 在线看一区二区| 精品国产亚洲在线| 亚洲精品国产一区二区精华液 | 国产欧美日韩久久| 亚洲综合在线视频| 另类调教123区| 在线观看国产一区二区| 久久亚洲欧美国产精品乐播| 一区二区在线免费| 国产盗摄视频一区二区三区| 欧美日韩1234| 亚洲欧洲三级电影| 国产乱码精品一区二区三区忘忧草| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩精品一区二区三区视频播放 | 欧美视频中文字幕|