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

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

?? ezusbinttransfer.cpp

?? EZ_USB cy7c68013的驅動程序
?? CPP
字號:
// EzUsbIntTransfer.cpp
//=============================================================================
//
// Compuware Corporation
// NuMega Lab
// 9 Townsend West
// Nashua, NH 03060  USA
//
// Copyright (c) 1999 Compuware Corporation. All Rights Reserved.
// Unpublished - rights reserved under the Copyright laws of the
// United States.
//
//=============================================================================

#include <vdw.h>
extern "C" {
#pragma warning (disable:4200)
#include <wdm.h>
#pragma warning (default:4200)
}

#pragma warning (default:4710)

#include <kusb.h>
#include "EzUsbIntTransfer.h"


KUsbInterruptTransfer::KUsbInterruptTransfer(
	KUsbLowerDevice* Dev,
	KUsbPipe* InterruptPipe,
	BOOLEAN bShortOk
	) :
		m_lStopRequested(0),
		m_lPolling(0)
{
	m_CtorStatus = Initialize(
						Dev,
						InterruptPipe,
						bShortOk
						);
}
		

NTSTATUS KUsbInterruptTransfer::Initialize(
	KUsbLowerDevice* Dev,
	KUsbPipe* InterruptPipe,
	BOOLEAN bShortOk
	)
{
	m_InterruptPipe = InterruptPipe;
	m_bShortOk = bShortOk;

	m_Stacks = static_cast<UCHAR>(Dev->StackRequirement() + 1);
	ASSERT( m_Stacks );

	m_pIntUrb = new URB;
	if( NULL == m_pIntUrb )
	{
		return STATUS_INSUFFICIENT_RESOURCES;
	}

	m_KIrp.m_Irp = m_KIrp.Allocate(m_Stacks);
	if( NULL == m_KIrp.m_Irp )
	{
		delete m_pIntUrb;
		return STATUS_INSUFFICIENT_RESOURCES;
	}

	return STATUS_SUCCESS;
}


	//This initiates a USB interrupt transfer that is recycled (MDL form)
NTSTATUS KUsbInterruptTransfer::StartPolling(
	KMemory& Mdl,
	ULONG Length,
	USB_INTERRUPT_CALLBACK pfnOnInterrupt, 
	PVOID pClientContext
	)
{
	ASSERT( m_InterruptPipe->IsOpen() );

	if( ! m_InterruptPipe->IsOpen() )
	{
		return STATUS_INVALID_DEVICE_STATE;
	}

	if( INTERLOCKED_COMPARE_EXCHANGE(&m_lPolling, 1, 1) )
		return STATUS_DEVICE_BUSY;

	InterlockedExchange(&m_lPolling, 1);

	// allocate a new context structure
	PINT_COMPLETION_INFO pCompInfo = new (NonPagedPool) INT_COMPLETION_INFO;

	// make sure it succeeded
	if( NULL == pCompInfo )
	{
		return STATUS_INSUFFICIENT_RESOURCES;
	}

	// initialize the context structure
	pCompInfo->m_pClass = this;
	pCompInfo->m_pfnOnInterrupt = pfnOnInterrupt;
	pCompInfo->m_pClientContext = pClientContext;

	m_InterruptPipe->BuildInterruptTransfer(
		Mdl,
		Length,
		m_bShortOk,
		NULL,
		m_pIntUrb
		);

	return m_InterruptPipe->SubmitUrb(
		m_KIrp,
		m_pIntUrb,
		LinkTo(InterruptTransferComplete),
		pCompInfo
		);
}


	//This initiates a USB interrupt transfer that is recycled (PVOID form)
NTSTATUS KUsbInterruptTransfer::StartPolling(
	PVOID Buffer,
	ULONG Length,
	USB_INTERRUPT_CALLBACK pfnOnInterrupt, 
	PVOID pClientContext
	)
{
	ASSERT( m_InterruptPipe->IsOpen() );

	if( ! m_InterruptPipe->IsOpen() )
	{
		return STATUS_INVALID_DEVICE_STATE;
	}

	// allocate a new context structure
	PINT_COMPLETION_INFO pCompInfo = new (NonPagedPool) INT_COMPLETION_INFO;

	// make sure it succeeded
	if( NULL == pCompInfo )
	{
		return STATUS_INSUFFICIENT_RESOURCES;
	}

	// initialize the context structure
	pCompInfo->m_pClass = this;
	pCompInfo->m_pfnOnInterrupt = pfnOnInterrupt;
	pCompInfo->m_pClientContext = pClientContext;

	m_InterruptPipe->BuildInterruptTransfer(
		Buffer,
		Length,
		m_bShortOk,
		NULL,
		m_pIntUrb
		);

	return m_InterruptPipe->SubmitUrb(
		m_KIrp,
		m_pIntUrb,
		LinkTo(InterruptTransferComplete),
		pCompInfo
		);
}
		

	//This is a completion routine that checks if the device
	//interrupts and calls the client ISR callback function if the device 
	//did interrupt.  It also re-submits the interrupt URB to USBD unless
	//stop is requested.
NTSTATUS __stdcall KUsbInterruptTransfer::InterruptTransferComplete(KIrp I, PINT_COMPLETION_INFO pContext)	
{
	InterlockedExchange(&m_lPolling, 0);
	ON_INTERRUPT_STATUS status = ON_INTERRUPT_SUCCESS;

	KUsbInterruptTransfer* pIntXfer = pContext->m_pClass;

// check the irp status
	if( NT_SUCCESS(I.Status()) )
	{
		m_NumInterrupts++;

		if( pContext->m_pfnOnInterrupt )
		{
			//Call the user's OnInterrupt handler synchronously
			status = pContext->m_pfnOnInterrupt(
					pIntXfer->m_pIntUrb,
					pContext->m_pClientContext
					);
		}
		else
		{
			status = ON_INTERRUPT_FAILURE;
		}
	}

	if( NT_SUCCESS(I.Status()) && 
		(ON_INTERRUPT_FAILURE != status) && 
		(1 != INTERLOCKED_COMPARE_EXCHANGE(&m_lStopRequested, 1, 1))
	  )
	{

		if( ON_INTERRUPT_SUCCESS == status )
		{
			memset(&reinterpret_cast<_URB_BULK_OR_INTERRUPT_TRANSFER*>(m_pIntUrb)->hca, 0, sizeof(_URB_HCD_AREA));

			m_KIrp.Reuse();
		}

		pIntXfer->m_InterruptPipe->SubmitUrb(
			m_KIrp,
			m_pIntUrb,
			LinkTo(InterruptTransferComplete),
			pContext
			);

		InterlockedExchange(&m_lPolling, 1);

		return STATUS_MORE_PROCESSING_REQUIRED;
	}

	delete pContext;

	return STATUS_MORE_PROCESSING_REQUIRED;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av综合在线| 日韩av电影免费观看高清完整版在线观看| 日韩视频免费观看高清完整版在线观看| 成人一区二区三区视频| 国产一区二区三区黄视频 | 日韩一级黄色片| 欧美丰满美乳xxx高潮www| 欧美日韩激情在线| 欧美日本在线视频| 日韩一级免费一区| www精品美女久久久tv| 久久久久久久电影| 国产精品免费aⅴ片在线观看| 国产精品美女一区二区| 亚洲欧美一区二区三区国产精品 | 亚洲1区2区3区视频| 日韩成人dvd| 国内成人自拍视频| 成人h精品动漫一区二区三区| 91浏览器在线视频| 欧美日产在线观看| 国产三级三级三级精品8ⅰ区| 国产精品污www在线观看| 亚洲黄色小说网站| 久久黄色级2电影| 国产成人av影院| 在线这里只有精品| 欧美xxx久久| 亚洲精品欧美激情| 美女视频黄久久| 91免费看片在线观看| 69久久99精品久久久久婷婷 | 在线免费一区三区| 欧美电影免费观看高清完整版在线| 精品久久久久久久久久久久久久久 | 久久久久久9999| 亚洲高清免费在线| 国产麻豆午夜三级精品| 欧美在线观看18| 久久久亚洲欧洲日产国码αv| 成人欧美一区二区三区白人| 婷婷中文字幕一区三区| 波波电影院一区二区三区| 日韩一区二区三区免费看 | 欧美一级一级性生活免费录像| 久久婷婷国产综合精品青草| 一区二区在线观看免费视频播放| 青草国产精品久久久久久| 91老司机福利 在线| 久久久不卡影院| 全国精品久久少妇| 欧美亚洲高清一区二区三区不卡| 国产三级三级三级精品8ⅰ区| 日韩高清在线不卡| 日本乱人伦aⅴ精品| 欧美高清在线精品一区| 激情六月婷婷久久| 欧美一区二区在线视频| 亚洲精品国产a| 不卡影院免费观看| 欧美经典一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 不卡一区二区中文字幕| 精品国产1区二区| 免费久久精品视频| 制服丝袜中文字幕一区| 一区二区三区在线免费观看| 96av麻豆蜜桃一区二区| 最新国产精品久久精品| 成人黄页在线观看| 国产精品网友自拍| 国产·精品毛片| 久久精品无码一区二区三区 | 亚洲国产精品精华液2区45| 国产在线国偷精品免费看| 欧美精品一区二区三区高清aⅴ | 久久新电视剧免费观看| 激情小说欧美图片| 久久色视频免费观看| 久久99精品久久久久久| 精品第一国产综合精品aⅴ| 极品少妇xxxx偷拍精品少妇| 欧美一区三区四区| 精品在线观看视频| 欧美经典三级视频一区二区三区| 成人午夜私人影院| 亚洲精品福利视频网站| 精品污污网站免费看| 日本欧美大码aⅴ在线播放| 日韩欧美中文字幕制服| 国产黄色成人av| 亚洲视频小说图片| 欧美视频一区二区三区在线观看 | 欧美三级中文字| 久久99精品国产.久久久久久| 337p粉嫩大胆色噜噜噜噜亚洲| 国产一区二区不卡| 亚洲色图另类专区| 欧美男人的天堂一二区| 国产一区二区三区美女| ●精品国产综合乱码久久久久| 欧美亚洲国产一卡| 韩国精品主播一区二区在线观看 | 欧美伊人久久久久久久久影院 | 精品伊人久久久久7777人| 亚洲国产高清在线| 精品视频一区二区不卡| 青青草国产精品亚洲专区无| 欧美国产综合色视频| 日本精品一级二级| 国产一区二区三区美女| 亚洲一区二区视频| 久久久国产午夜精品| 欧美日韩一区高清| 国产suv精品一区二区三区| 亚洲成人手机在线| 亚洲国产电影在线观看| 日韩午夜中文字幕| 色哦色哦哦色天天综合| 国产成人精品aa毛片| 青青草伊人久久| 亚洲精选一二三| 国产嫩草影院久久久久| 欧美一级精品在线| 欧美亚洲图片小说| 成人黄色一级视频| 久久国产剧场电影| 日韩精品免费专区| 亚洲综合成人在线| 最新热久久免费视频| 久久天堂av综合合色蜜桃网| 欧美精品日韩精品| 在线国产电影不卡| 色呦呦国产精品| 成人av资源在线| 国产盗摄女厕一区二区三区| 久久精品国产免费看久久精品| 香蕉加勒比综合久久| 亚洲九九爱视频| 亚洲品质自拍视频| 亚洲欧洲色图综合| 国产精品久久看| 国产精品三级久久久久三级| 精品国产91久久久久久久妲己| 欧美一区2区视频在线观看| 欧洲在线/亚洲| 欧美私人免费视频| 欧美中文字幕久久| 欧美日韩高清影院| 色网综合在线观看| 欧美丝袜丝交足nylons图片| 欧美制服丝袜第一页| 欧美午夜精品久久久久久孕妇| 日本道色综合久久| 在线观看视频91| 欧美日韩国产精品自在自线| 欧美手机在线视频| 欧美老肥妇做.爰bbww| 欧美福利视频一区| 91精品国产欧美一区二区| 欧美丰满少妇xxxbbb| 日韩欧美二区三区| 国产午夜精品福利| 亚洲视频一区在线| 亚洲电影一区二区三区| 日韩二区在线观看| 久久精品国产亚洲aⅴ| 国产精品一区二区在线播放| 粉嫩av一区二区三区在线播放 | 99re亚洲国产精品| 色av成人天堂桃色av| 欧美女孩性生活视频| 欧美va亚洲va在线观看蝴蝶网| 久久久久久久国产精品影院| 亚洲丝袜美腿综合| 日韩成人av影视| 国产毛片一区二区| 在线看日韩精品电影| 日韩久久久久久| 国产精品白丝在线| 手机精品视频在线观看| 久久精品国内一区二区三区| 成人深夜在线观看| 欧美人妖巨大在线| 中文字幕成人av| 日韩高清在线一区| 波多野结衣精品在线| 日韩一区二区三区视频在线| 国产精品久久久久久久久免费樱桃 | 1区2区3区国产精品| 日韩电影在线一区二区| 粉嫩av一区二区三区| 777亚洲妇女| 国产精品成人免费精品自在线观看 | 在线观看一区二区视频| 久久精品一级爱片| 日日欢夜夜爽一区| 97aⅴ精品视频一二三区| 精品国产乱码久久久久久老虎| 一区二区三区毛片|