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

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

?? serpriv.h

?? 關于S3C2442平臺藍牙模塊驅動
?? H
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:  

serpriv.h

Abstract:  

Holds definitions private to the implementation of the machine independent
driver interface.

Notes: 


--*/

#ifndef __SERPRIV_H__
#define __SERPRIV_H__

//
// The serial event structure contains fields used to pass serial
// event information from the PDD to the MDD.  This information
// is passed via a callback, so the scope of this structure remains
// limited to the MDD.
//
typedef struct __COMM_EVENTS	{
	HANDLE  hCommEvent;			// @field Indicates serial events from PDD to MDD
	ULONG	fEventMask;			// @field Event Mask requestd by application 
	ULONG	fEventData;			// @field Event Mask Flag. 
    ULONG   fAbort;             // @field TRUE after SetCommMask( 0 )
	CRITICAL_SECTION EventCS;	    //  CommEvent access and related sign atom
	} COMM_EVENTS, *PCOMM_EVENTS;


/*
 @doc
 @struct RX_BUFFER_INFO | Driver Receive Buffer Information.
 */
typedef struct __RX_BUFFER_INFO {
	ULONG	Read;				/* @field Current Read index. */
	ULONG	Write;				/* @field Current Write index. */
	ULONG	Length;				/* @field Length of buffer */
	BOOL	DataAvail;			/* @field BOOL reflecting existence of data. */
	PUCHAR	RxCharBuffer;		/* @field Start of buffer */
	CRITICAL_SECTION	CS;		/* @field Critical section */
	} RX_BUFFER_INFO, *PRX_BUFFER_INFO;

#define RxResetFifo(pSH)   pSH->RxBufferInfo.Write = pSH->RxBufferInfo.Read = 0
#define RxEnterCS(pSH)	   EnterCriticalSection (&(pSH->RxBufferInfo.CS))
#define RxLeaveCS(pSH)	   LeaveCriticalSection (&(pSH->RxBufferInfo.CS))
#define RxWrite(pSH)	   (pSH->RxBufferInfo.Write)
#define RxRead(pSH)		   (pSH->RxBufferInfo.Read)
#define RxLength(pSH)	   (pSH->RxBufferInfo.Length)
// Don't use the power of 2 trick for length, because the PDD has option of overriding
// buffer length, and may not specify a power of 2.  Lets be more flexible & a very
// little bit slower.
// #define RxBytesAvail(pSH)  ((RxWrite(pSH) - RxRead(pSH)) & (RxLength(pSH) - 1))

#define RxBuffWrite(pSH)   (pSH->RxBufferInfo.RxCharBuffer+pSH->RxBufferInfo.Write)
#define RxBuffRead(pSH)	   (pSH->RxBufferInfo.RxCharBuffer+pSH->RxBufferInfo.Read)

typedef struct __TX_BUFFER_INFO {
	DWORD	Permissions;		/* @field Current permissions */
	ULONG	Read;				/* @field Current Read index. */
	ULONG	Length;				/* @field Length of buffer */
	PUCHAR	TxCharBuffer;		/* @field Start of buffer */
	CRITICAL_SECTION	CS;		/* @field Critical section */
} TX_BUFFER_INFO, *PTX_BUFFER_INFO;

#define TxEnterCS(pSH)	   EnterCriticalSection (&(pSH->TxBufferInfo.CS))
#define TxLeaveCS(pSH)	   LeaveCriticalSection (&(pSH->TxBufferInfo.CS))
#define TxRead(pSH)		   (pSH->TxBufferInfo.Read)
#define TxLength(pSH)	   (pSH->TxBufferInfo.Length)
#define TxBytesAvail(pSH)  (TxLength(pSH)-TxRead(pSH))
#define TxBuffRead(pSH)	   (pSH->TxBufferInfo.TxCharBuffer+pSH->TxBufferInfo.Read)

typedef VOID (*COMMFUNC)(PVOID	pHead);

// Forward declare for use below
typedef struct __HWOBJ HWOBJ, *PHWOBJ;
typedef struct __HW_OPEN_INFO HW_OPEN_INFO, *PHW_OPEN_INFO;

// @struct	HW_INDEP_INFO | Hardware Independent Serial Driver Head Information.
typedef struct __HW_INDEP_INFO {
	CRITICAL_SECTION	TransmitCritSec1;		// @field Protects tx action
	CRITICAL_SECTION	ReceiveCritSec1;		// @field Protects rx action

	PHWOBJ			pHWObj;			// @field Represents PDD object.
    PVOID	        pHWHead;		// @field Device context for PDD.
    
	HANDLE			hSerialEvent;	// @field Serial event, both rx and tx
	HANDLE			hReadEvent;		// @field Serial event, both rx and tx
	HANDLE			hKillDispatchThread;	// @field Synchonize thread end
	HANDLE			hTransmitEvent;	// @field transmit event, both rx and tx
	HANDLE			pDispatchThread;// @field ReceiveThread 
	ULONG			Priority256;    // @field CeThreadPriority of Dispatch Thread.
	ULONG			DroppedBytesMDD;// @field Record of bytes dropped by MDD.
	ULONG			DroppedBytesPDD;// @field Record of bytes dropped by PDD.
	ULONG			RxBytes;	    // @field Record of total bytes received.
	ULONG			TxBytes;	    // @field Record of total bytes transmitted.
	ULONG			TxBytesPending;	// @field Record of total bytes awaiting transmit.
	ULONG			TxBytesSent;	// @field Record of bytes sent in one transmission
	DCB				DCB;			// @field DCB (see Win32 Documentation.
	COMMTIMEOUTS	CommTimeouts;	// @field Time control field. 
	DWORD			OpenCnt;		// @field Protects use of this port 
	DWORD			KillRxThread:1;	// @field Flag to terminate SerialDispatch thread.
	DWORD			XFlow:1;		// @field True if Xon/Xoff flow ctrl.
	DWORD			StopXmit:1;		// @field Stop transmission flag.
	DWORD			SentXoff:1;		// @field True if XOFF sent.
	DWORD			DtrFlow:1;		// @field True if currently DTRFlowed	
	DWORD			RtsFlow:1;		// @field True if currently RTSFlowed
	DWORD           fAbortRead:1;   // @field Used for PURGE
    DWORD           fAbortTransmit:1;// @field Used for PURGE
	DWORD			Reserved:24;	// @field remaining bits.
	ULONG	        fEventMask;		// @field Sum of event mask for all opens
	RX_BUFFER_INFO	RxBufferInfo;	// @field rx buffer info.
	TX_BUFFER_INFO	TxBufferInfo;	// @field tx buffer info.


    LIST_ENTRY      OpenList;       // @field Head of linked list of OPEN_INFOs    
	CRITICAL_SECTION OpenCS;	    // @field Protects Open Linked List + ref counts

    PHW_OPEN_INFO   pAccessOwner;   // @field Points to whichever open has acess permissions
} HW_INDEP_INFO, *PHW_INDEP_INFO;

__inline  ULONG RxBytesAvail(PHW_INDEP_INFO  pSH) {
    // Note: We have to copy RxRead and RxWrite index to local in order to make it atomic.
    register DWORD RxWIndex=RxWrite(pSH), RxRIndex=RxRead(pSH);
    return (RxWIndex>=RxRIndex?RxWIndex- RxRIndex : RxLength(pSH) - RxRIndex + RxWIndex );
}

// @struct	HW_OPEN_INFO | Info pertaining to each open instance of a device
typedef struct __HW_OPEN_INFO {
    PHW_INDEP_INFO  pSerialHead;    // @field Pointer back to our HW_INDEP_INFO
    DWORD	        AccessCode;     // @field What permissions was this opened with
    DWORD	        ShareMode;      // @field What Share Mode was this opened with
    DWORD           StructUsers;    // @field Count of threads currently using struct.
    COMM_EVENTS		CommEvents;		// @field Contains all info for serial event handling
    LIST_ENTRY      llist;          // @field Linked list of OPEN_INFOs
	} HW_OPEN_INFO, *PHW_OPEN_INFO;

#define E_OF_CHAR			0xd
#define ERROR_CHAR			0xd
#define BREAK_CHAR			0xd
#define EVENT_CHAR			0xd
#define X_ON_CHAR			0x11
#define X_OFF_CHAR			0x13

#define X_FLOW_CTRL			0x1

#define MAX_SERIAL_INDEX	16
#define RX_BUFFER_SIZE		2048
#define COMM_FUNC_SIZE		16

static	PHW_INDEP_INFO	pGlobalSerialHead[MAX_SERIAL_INDEX];
static	ULONG		GlobalSerialHeadNumber = 0;

static
PHW_INDEP_INFO
GetSerialHead(
	PVOID	pHead
	);

#define READ_TIMEOUT			250
#define READ_TIMEOUT_MULTIPLIER		10
#define READ_TIMEOUT_CONSTANT		100
#define WRITE_TIMEOUT_MULTIPLIER	10
#define WRITE_TIMEOUT_CONSTANT		100

#define DEFAULT_CE_THREAD_PRIORITY 103

						
/* Implemented by hw dependent code.
 */
#include <serhw.h>


#endif //	__SERPRIV_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
宅男噜噜噜66一区二区66| 国产一区二区在线观看视频| 日本va欧美va瓶| 欧美一区二区三区免费视频 | 欧美日韩一级视频| 欧美天堂一区二区三区| 亚洲午夜免费福利视频| 在线看不卡av| 激情综合一区二区三区| 中文在线一区二区| 91浏览器在线视频| 日韩电影在线免费看| 久久久www成人免费毛片麻豆 | 日本精品视频一区二区| 激情久久五月天| 亚洲精品视频在线观看免费| 色天天综合久久久久综合片| 久久99国内精品| 国产成人综合视频| 日韩精品电影在线观看| 亚洲欧美日韩国产手机在线 | 丰满白嫩尤物一区二区| 亚洲裸体xxx| 午夜久久福利影院| 亚洲丝袜美腿综合| 久久亚洲一级片| 欧美一区午夜精品| 久久免费午夜影院| 一区二区三区影院| 国产精品美女久久久久久2018| 欧美一级黄色录像| 欧美日韩中文另类| 国产日产亚洲精品系列| wwwwww.欧美系列| 亚洲免费观看高清完整版在线| 日日夜夜精品免费视频| 国产suv精品一区二区6| 欧美日韩精品免费观看视频| 九九九久久久精品| 91丨九色丨蝌蚪富婆spa| 亚洲不卡在线观看| 亚洲品质自拍视频网站| 日本不卡在线视频| 色网站国产精品| 久久久蜜桃精品| 亚洲国产一区二区三区 | 国产精品色噜噜| 亚洲色图欧美在线| 精东粉嫩av免费一区二区三区| 91色九色蝌蚪| 久久伊人蜜桃av一区二区| 亚洲二区在线视频| 91小视频在线观看| 欧美高清在线精品一区| 久久精品国产久精国产爱| 美女一区二区视频| 久久不见久久见免费视频1| 在线一区二区三区| 国产精品蜜臀在线观看| 国产老妇另类xxxxx| 国产成人亚洲精品青草天美| 91精品国产欧美一区二区18| 亚洲欧美色图小说| 成人免费va视频| 色88888久久久久久影院野外| 精品国产91久久久久久久妲己| 2021久久国产精品不只是精品| 亚洲国产欧美在线人成| 99久久综合99久久综合网站| 99精品一区二区| 色婷婷精品大在线视频| 中文字幕精品—区二区四季| 国产精品 欧美精品| 久久蜜桃av一区二区天堂 | 国产高清一区日本| 欧美精品一区二区三区在线| 美女一区二区视频| 日韩视频免费直播| 看片的网站亚洲| 日韩欧美国产系列| 亚洲视频一区在线观看| www.av精品| 日韩理论片中文av| 91久久精品日日躁夜夜躁欧美| 亚洲视频在线一区二区| 在线视频国内一区二区| 亚洲综合一二三区| 国产激情偷乱视频一区二区三区| 久久夜色精品一区| 国产高清不卡二三区| 国产精品久久久一区麻豆最新章节| 亚洲成av人片一区二区梦乃| 91精品中文字幕一区二区三区| 亚洲a一区二区| 欧美一区二区在线播放| 激情综合色丁香一区二区| 国产亚洲制服色| 男女性色大片免费观看一区二区| 日韩三级高清在线| 国产999精品久久久久久绿帽| 最新热久久免费视频| 国产一区二区精品久久91| 欧美激情一区二区三区在线| 成人av资源站| 久久一二三国产| 91在线一区二区三区| 日本在线不卡视频| 欧美激情一区二区三区不卡| 在线精品视频免费播放| 久久99精品久久久久久动态图| 日本一区二区三区国色天香| 在线观看视频一区二区| 国产揄拍国内精品对白| 一区二区视频在线| 久久一二三国产| 欧美三片在线视频观看 | 亚洲精品视频自拍| 精品91自产拍在线观看一区| 97久久精品人人爽人人爽蜜臀| 日本最新不卡在线| 亚洲人快播电影网| 久久亚区不卡日本| 欧美日韩午夜在线| 91浏览器打开| 福利一区二区在线观看| 另类小说图片综合网| 亚洲精品精品亚洲| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 最新国产の精品合集bt伙计| 日韩一级欧美一级| 在线免费不卡电影| av男人天堂一区| 高清不卡一二三区| 国产在线精品一区二区三区不卡| 亚洲国产美女搞黄色| 成人免费一区二区三区视频| 久久综合av免费| 日韩欧美一二三四区| 欧美久久久久免费| 奇米亚洲午夜久久精品| 亚洲精品va在线观看| 中文字幕亚洲成人| 国产精品少妇自拍| 国产精品久久久久一区二区三区 | 中文一区二区完整视频在线观看| 91麻豆精品国产自产在线观看一区 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久久综合九色综合97_久久久| 91精品国产综合久久精品| 91国产视频在线观看| 91福利国产成人精品照片| 91影院在线观看| 一本一道久久a久久精品综合蜜臀| 成人在线视频一区| 成人性色生活片| 成人永久免费视频| 97se狠狠狠综合亚洲狠狠| 97aⅴ精品视频一二三区| 91一区二区在线| 色久综合一二码| 欧美丝袜丝交足nylons| 欧美精品丝袜中出| 欧美一区二区在线免费播放| 日韩欧美视频在线| 精品理论电影在线| 色妞www精品视频| 色综合久久中文综合久久97| 欧美在线色视频| 欧美色精品在线视频| 91精品国产综合久久国产大片| 日韩欧美综合在线| 久久精品夜色噜噜亚洲a∨| 国产精品久久国产精麻豆99网站| 亚洲免费视频成人| 日韩国产在线观看| 国产福利精品一区| 色天使久久综合网天天| 日韩视频永久免费| 国产日韩欧美精品电影三级在线| 国产精品久久久久久久久免费樱桃 | 成人欧美一区二区三区小说| 一级日本不卡的影视| 美女视频黄 久久| 成人av在线资源| 欧美丝袜丝交足nylons图片| 精品免费日韩av| 亚洲精品日日夜夜| 日本午夜精品视频在线观看| 国产伦精一区二区三区| 一本到不卡精品视频在线观看| 欧美三级午夜理伦三级中视频| 日韩欧美的一区二区| 亚洲免费在线观看| 国产精品综合网| 日韩视频免费直播| 国产精品无人区| 全部av―极品视觉盛宴亚洲| 成人国产精品免费观看视频| 欧美色区777第一页| 亚洲国产精华液网站w|