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

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

?? phcddrv.cpp

?? ISP1161 USB Driver under WinCE for StrongARM processor implementation
?? CPP
字號:
/*++
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.
Copyright (c) 1995-1998  Microsoft Corporation

Module Name:  
    phcddrv.cpp

Abstract:  
    
Notes: 

--*/

// There are four warnings that I like from Warning level 4.  Since we build
// at warning level 3, I'm setting these four down to level 3 so I still get
// them.
// C4100 unrefrenced formal parameter
// C4101 unrefrenced local variable
// C4705 statement has no effect
// C4706 assignment in conditional
#pragma warning (3 : 4100 4101 4705 4706)

#include <windows.h>
#include <types.h>      // For UINT8 etc.
#include <ceddk.h>
#include <cardserv.h>
#include <devload.h>
#include <phcdddsi.h>

#include "hcdi.h"
#include "globals.hpp"
#include "mem.hpp"
#include "phcdinc.hpp"
#include "phcd.hpp"


/* Debug Zones.
 */
#ifdef DEBUG

#define DBG_INIT                0x0001
#define DBG_ATTACH              0x0002
#define DBG_DESCRIPTORS         0x0004
#define DBG_HUB                 0x0008
#define DBG_PCI                 0x0010
#define DBG_INTR                0x0020
#define DBG_TD                  0x0040
#define DBG_ED                  0x0080
#define DBG_CRITICAL            0x0100
#define DBG_UNUSED1             0x0200
#define DBG_UNUSED2             0x0400
#define DBG_UNUSED3             0x0800
#define DBG_ALLOC               0x1000
#define DBG_FUNCTION            0x2000
#define DBG_WARNING             0x4000
#define DBG_ERROR               0x8000

DBGPARAM dpCurSettings = {
    TEXT("Phcd"), {
        TEXT("Init"), TEXT("Attach/Detach"), TEXT("Descriptors"), TEXT("Hub"),
        TEXT("PCI"), TEXT("Interrupts"), TEXT("TDs"), TEXT("EDs"),
        TEXT("Critical Thread"), TEXT("Unused"), TEXT("Unused"),TEXT("Unused"), 
        TEXT("Alloc"), TEXT("Functions"),TEXT("Warnings"), TEXT("Errors")},
    DBG_ERROR | DBG_WARNING};
#endif

extern "C" HINSTANCE g_hInstance;
DWORD g_IstThreadPriority;


// By wrapping these two in an #ifdef DEBUG, I can rely on the complier to
// make sure I didn't use them in a retail build.
// I'm just not doing that right now because I'm still using these for testing.
#ifdef DEBUG

void __cdecl
DbgPrintf(PTCHAR pszFormat, ...)
{
    static TCHAR        szDebugStr[128] = TEXT("Phcd:");

    va_list ap;

    va_start(ap, pszFormat);

    wvsprintf(&szDebugStr[5], pszFormat, ap);

    OutputDebugString(szDebugStr);
}

void __cdecl
Printf(PTCHAR pszFormat, ...)
{
    static TCHAR        szDebugStr[128];

    va_list ap;

    va_start(ap, pszFormat);

    wvsprintf(&szDebugStr[0], pszFormat, ap);

    OutputDebugString(szDebugStr);
}
#endif //DEBUG

extern HCD_FUNCS gc_HcdFuncs =
{
    sizeof(HCD_FUNCS),      //DWORD                   dwCount;

    &HcdGetFrameNumber,     //LPHCD_GET_FRAME_NUMBER      lpGetFrameNumber;
    &HcdGetFrameLength,     //LPHCD_GET_FRAME_LENGTH      lpGetFrameLength;
    &HcdSetFrameLength,     //LPHCD_SET_FRAME_LENGTH      lpSetFrameLength;
    &HcdStopAdjustingFrame, //LPHCD_STOP_ADJUSTING_FRAME  lpStopAdjustingFrame;
    &HcdOpenPipe,           //LPHCD_OPEN_PIPE             lpOpenPipe;
    &HcdClosePipe,          //LPHCD_CLOSE_PIPE            lpClosePipe;
    &HcdResetPipe,          //LPHCD_RESET_PIPE            lpResetPipe;
    &HcdIsPipeHalted,       //LPHCD_IS_PIPE_HALTED        lpIsPipeHalted;
    &HcdIssueTransfer,      //LPHCD_ISSUE_TRANSFER        lpIssueTransfer;
    &HcdAbortTransfer       //LPHCD_ABORT_TRANSFER        lpAbortTransfer;
};


BOOL WINAPI DllMain(HANDLE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
{
	if ( dwReason == DLL_PROCESS_ATTACH ) {
		DEBUGREGISTER((HINSTANCE)hinstDLL);
        DEBUGMSG (ZONE_INIT,(TEXT("PHCD driver DLL attach\r\n")));
    }

    return PhcdPdd_DllMain(hinstDLL, dwReason, lpvReserved);
}


static BOOL HcdGetFrameNumber(LPVOID lpvHcd, LPDWORD lpdwFrameNumber)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->GetFrameNumber(lpdwFrameNumber);
}

static BOOL HcdGetFrameLength(LPVOID lpvHcd, LPUSHORT lpuFrameLength)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->GetFrameLength(lpuFrameLength);
}

static BOOL HcdSetFrameLength(LPVOID lpvHcd, HANDLE hEvent, USHORT uFrameLength)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->SetFrameLength(hEvent, uFrameLength);
}

static BOOL HcdStopAdjustingFrame(LPVOID lpvHcd)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->StopAdjustingFrame();
}

static BOOL HcdOpenPipe(LPVOID lpvHcd, UINT iDevice,
        LPCUSB_ENDPOINT_DESCRIPTOR lpEndpointDescriptor,
        LPUINT lpiEndpointIndex)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->OpenPipe(iDevice, lpEndpointDescriptor, lpiEndpointIndex);
}

static BOOL HcdClosePipe(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->ClosePipe(iDevice, iEndpointIndex);
}

static BOOL HcdResetPipe(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->ResetPipe(iDevice, iEndpointIndex);
}

static BOOL HcdIsPipeHalted(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex, LPBOOL lpbHalted)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->IsPipeHalted(iDevice, iEndpointIndex, lpbHalted);
}

static BOOL HcdIssueTransfer(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex,
        LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter,
        DWORD dwFlags, LPCVOID lpvControlHeader,
        DWORD dwStartingFrame, DWORD dwFrames, LPCDWORD aLengths,
        DWORD dwBufferSize, LPVOID lpvBuffer, ULONG paBuffer,
        LPCVOID lpvCancelId, LPDWORD adwIsochErrors, LPDWORD adwIsochLengths,
        LPBOOL lpfComplete, LPDWORD lpdwBytesTransfered, LPDWORD lpdwError)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->IssueTransfer(iDevice, iEndpointIndex, lpStartAddress,
            lpParameter, dwFlags, lpvControlHeader, dwStartingFrame, dwFrames,
            aLengths, dwBufferSize, lpvBuffer, paBuffer, lpvCancelId,
            adwIsochErrors, adwIsochLengths,lpfComplete, lpdwBytesTransfered,
            lpdwError);
}

static BOOL HcdAbortTransfer(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex,
        LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter,
        LPCVOID lpvCancelId)
{
    CPhcd * const pPhcd = (CPhcd *)lpvHcd;
    return pPhcd->AbortTransfer(iDevice, iEndpointIndex, lpStartAddress,
            lpParameter, lpvCancelId);
}


// -----------------------------------------------------------------------------
// Function to read the interrupt thread priority from the registry.
// If it is not in the registry then a default value is returned.
// -----------------------------------------------------------------------------
static DWORD
GetInterruptThreadPriority(
    LPWSTR lpszActiveKey
    )
{
    HKEY hDevKey;
    DWORD dwValType;
    DWORD dwValLen;
    DWORD dwPrio;

    dwPrio = DEFAULT_PHCD_IST_PRIORITY;

    hDevKey = OpenDeviceKey(lpszActiveKey);
    if (hDevKey) {
        dwValLen = sizeof(DWORD);
        RegQueryValueEx(
            hDevKey,
            TEXT("Priority256"),
            NULL,
            &dwValType,
            (PUCHAR)&dwPrio,
            &dwValLen);
        RegCloseKey(hDevKey);
    }
    return dwPrio;
}


extern "C" LPVOID PhcdMdd_CreateMemoryObject(DWORD cbSize, DWORD cbHighPrioritySize, 
                                             PUCHAR pVirtAddr, PUCHAR pPhysAddr)
{
    //
    // We need at least a USBPAGE for Special allocation and a PAGE for normal
    // allocation.
    //
    ASSERT((cbHighPrioritySize + (2*USBPAGESIZE)) < cbSize);

    CPhysMem * pobMem = new CPhysMem(cbSize,cbHighPrioritySize,pVirtAddr,pPhysAddr);

    return pobMem;
}

extern "C" LPVOID PhcdMdd_CreatePhcdObject(LPVOID lpvPhcdPddObject,
        LPVOID lpvMemoryObject, LPCWSTR szRegKey, PUCHAR ioPortBase,
        DWORD dwSysIntr)
{
	
	CPhysMem * pobMem = (CPhysMem *)lpvMemoryObject;
    CPhcd * pobPhcd = new CPhcd(lpvPhcdPddObject, pobMem, szRegKey, ioPortBase,
            dwSysIntr);
    if(pobPhcd->Initialize() == FALSE)
    {
        delete pobPhcd;
        pobPhcd = NULL;
    }

    return pobPhcd;
}

extern "C" BOOL PhcdMdd_DestroyPhcdObject(LPVOID lpvPhcdObject)
{
    CPhcd * pobPhcd = (CPhcd *)lpvPhcdObject;
    delete pobPhcd;

    return TRUE;
}

extern "C" BOOL PhcdMdd_DestroyMemoryObject(LPVOID lpvMemoryObject)
{
    CPhysMem * pobMem = (CPhysMem *)lpvMemoryObject;
    delete pobMem;

    return TRUE;
}

extern "C" BOOL PhcdMdd_PowerUp(LPVOID lpvPhcdObject)
{
    CPhcd * pobPhcd = (CPhcd *)lpvPhcdObject;
    pobPhcd->PowerMgmtCallback(FALSE);

    return TRUE;
}

extern "C" BOOL PhcdMdd_PowerDown(LPVOID lpvPhcdObject)
{
    CPhcd * pobPhcd = (CPhcd *)lpvPhcdObject;
    pobPhcd->PowerMgmtCallback(TRUE);

    return TRUE;
}



// Stream functions
extern "C" DWORD PCD_Init(DWORD dwContext)
{
    DEBUGMSG(ZONE_INIT, (TEXT("PHCD: HCD_Init\r\n")));
	g_IstThreadPriority = GetInterruptThreadPriority((LPWSTR)dwContext);
    return PhcdPdd_Init(dwContext);
}


extern "C" void PCD_PowerUp(DWORD hDeviceContext)
{
    PhcdPdd_PowerUp(hDeviceContext);

    return;
}


extern "C" void PCD_PowerDown(DWORD hDeviceContext)
{
    PhcdPdd_PowerDown(hDeviceContext);

    return;
}


extern "C" BOOL PCD_Deinit(DWORD hDeviceContext)
{
    DEBUGMSG (ZONE_INIT, (TEXT("PHCD: HCD_Deinit\r\n")));
    return PhcdPdd_Deinit(hDeviceContext);
}


extern "C" DWORD PCD_Open(DWORD hDeviceContext, DWORD AccessCode,
        DWORD ShareMode)
{
    return PhcdPdd_Open(hDeviceContext, AccessCode, ShareMode);
}


extern "C" BOOL PCD_Close(DWORD hOpenContext)
{
    return PhcdPdd_Close(hOpenContext);
}


extern "C" DWORD PCD_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
    return PhcdPdd_Read(hOpenContext, pBuffer, Count);
}


extern "C" DWORD PCD_Write(DWORD hOpenContext, LPCVOID pSourceBytes,
        DWORD NumberOfBytes)
{
    return PhcdPdd_Write(hOpenContext, pSourceBytes, NumberOfBytes);
}


extern "C" DWORD PCD_Seek(DWORD hOpenContext, LONG Amount, DWORD Type)
{
    return PhcdPdd_Seek(hOpenContext, Amount, Type);
}


extern "C" BOOL PCD_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn,
        DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut)
{
    return PhcdPdd_IOControl(hOpenContext, dwCode, pBufIn, dwLenIn, pBufOut,
            dwLenOut, pdwActualOut);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
ww久久中文字幕| 欧美一区二区三区色| 国产精品影音先锋| 久久精品99国产精品日本| 天天综合色天天综合色h| 亚洲黄色免费网站| 亚洲va国产天堂va久久en| 一区二区三区免费看视频| 亚洲女女做受ⅹxx高潮| 亚洲一级二级在线| 蜜臀av亚洲一区中文字幕| 久久99精品国产麻豆婷婷| 韩国理伦片一区二区三区在线播放| 奇米色一区二区| 国产精品一区二区视频| 99久久久久久| 欧美亚洲愉拍一区二区| 7777女厕盗摄久久久| 2欧美一区二区三区在线观看视频| 精品国产百合女同互慰| 亚洲国产精品传媒在线观看| 亚洲免费伊人电影| 日韩av电影免费观看高清完整版| 九色综合狠狠综合久久| 成人免费视频免费观看| 中国色在线观看另类| 亚洲人成在线播放网站岛国| 图片区小说区区亚洲影院| 精品一区二区久久| 91福利视频在线| 精品成人a区在线观看| 亚洲欧美在线观看| 蜜臀va亚洲va欧美va天堂| 成人免费视频一区| 91精品国产乱码久久蜜臀| 国产精品久久久久久久久图文区| 亚洲一二三区视频在线观看| 国产精品一卡二卡| 欧美色中文字幕| 国产精品人人做人人爽人人添 | 精品捆绑美女sm三区| 国产精品国产三级国产专播品爱网| 亚洲综合免费观看高清完整版| 久久成人免费电影| 欧美探花视频资源| 国产婷婷色一区二区三区| 五月天久久比比资源色| 成人免费福利片| 欧美mv日韩mv国产| 水野朝阳av一区二区三区| 99国产麻豆精品| 久久先锋影音av| 免费视频最近日韩| 欧美日韩午夜在线| 亚洲美女免费在线| 成人小视频在线| 久久久久久亚洲综合影院红桃| 日韩国产欧美在线视频| 欧美在线高清视频| 一区二区三区中文字幕| 91视视频在线直接观看在线看网页在线看 | 老色鬼精品视频在线观看播放| 色婷婷精品久久二区二区蜜臂av| 精品精品国产高清一毛片一天堂| 亚洲国产一区二区在线播放| 一本色道久久综合狠狠躁的推荐| 国产网红主播福利一区二区| 国产一区啦啦啦在线观看| 欧美一区永久视频免费观看| 秋霞午夜av一区二区三区| 91精品蜜臀在线一区尤物| 亚洲福中文字幕伊人影院| 欧美日韩视频不卡| 日韩电影在线免费看| 9191成人精品久久| 蜜桃视频一区二区| 欧美变态tickling挠脚心| 国内不卡的二区三区中文字幕 | 国产乱色国产精品免费视频| 日韩精品一区二区三区视频播放 | 视频在线在亚洲| 3d成人h动漫网站入口| 日日欢夜夜爽一区| 日韩欧美中文字幕一区| 国产一区免费电影| 国产精品久久久久久一区二区三区 | 欧美精品一区二区三区在线播放| 精品中文字幕一区二区| 精品国产一区二区三区不卡 | 在线观看亚洲精品| 日本少妇一区二区| 久久精品免费在线观看| 99久久国产综合色|国产精品| 亚洲一区二区视频在线| 日韩女同互慰一区二区| 国产成人高清视频| 一级中文字幕一区二区| 日韩欧美一区二区在线视频| 国产福利91精品一区二区三区| 中文字幕亚洲在| 欧美性大战xxxxx久久久| 六月丁香婷婷久久| 国产精品日日摸夜夜摸av| 色八戒一区二区三区| 蜜臀av一区二区在线观看| 中文字幕中文字幕一区二区| 欧美日韩一区二区在线观看视频| 久久69国产一区二区蜜臀| 国产精品成人在线观看| 欧美一区二区视频在线观看2020| 国产精品一区2区| 日日夜夜精品视频免费| 日韩一区在线免费观看| 日韩欧美国产高清| 欧美最新大片在线看| 国产一区二区三区精品视频| 一区二区三区视频在线观看| 欧美xxxx老人做受| 欧美日韩专区在线| 成人免费电影视频| 精品午夜一区二区三区在线观看| 亚洲精选一二三| 精品sm捆绑视频| 3751色影院一区二区三区| 91在线视频免费91| 国产成人亚洲综合a∨猫咪| 日韩精品一级中文字幕精品视频免费观看| 亚洲国产精品v| 日韩欧美卡一卡二| 欧美三级日本三级少妇99| 91在线观看高清| 成人午夜视频免费看| 国产制服丝袜一区| 美女任你摸久久| 日韩中文字幕不卡| 亚洲午夜久久久久| 一区二区三区欧美| 亚洲精品乱码久久久久久黑人 | 麻豆高清免费国产一区| 亚洲高清免费观看高清完整版在线观看| 日本一区二区电影| 国产日韩v精品一区二区| 日韩欧美国产一区在线观看| 91精品一区二区三区在线观看| 在线观看一区二区视频| 欧洲一区在线电影| 在线免费观看视频一区| 色综合中文综合网| 国产成人亚洲精品青草天美| 精品无人码麻豆乱码1区2区| 久久精品国产免费| 久久不见久久见免费视频7| 免费欧美高清视频| 久久 天天综合| 国产一二精品视频| 丁香六月综合激情| 成人精品电影在线观看| 99久久久精品| 欧美色电影在线| 日韩欧美一级在线播放| 2020日本不卡一区二区视频| 久久精品欧美一区二区三区不卡| 国产拍揄自揄精品视频麻豆| 国产精品私人影院| 亚洲女人****多毛耸耸8| 亚洲小少妇裸体bbw| 日韩国产精品久久| 黑人巨大精品欧美一区| 国产成人精品综合在线观看| jvid福利写真一区二区三区| 色成年激情久久综合| 欧美一区二区三区日韩| 国产亚洲综合色| 玉米视频成人免费看| 秋霞电影网一区二区| 国产传媒日韩欧美成人| 日本韩国欧美一区| 日韩欧美一级二级| 国产精品国产三级国产普通话三级| 亚洲一区二区三区在线看| 美女一区二区视频| 99精品视频在线播放观看| 欧美日本在线观看| 国产三区在线成人av| 一区二区三区在线影院| 麻豆国产欧美一区二区三区| 99精品国产91久久久久久 | 国产v日产∨综合v精品视频| 欧美在线制服丝袜| 久久夜色精品国产欧美乱极品| 亚洲毛片av在线| 国产综合久久久久久久久久久久| 99视频精品在线| 精品日韩在线观看| 亚洲一二三区不卡| 粗大黑人巨茎大战欧美成人| 日韩欧美国产综合| 亚洲国产精品一区二区久久| 国产91丝袜在线观看| 91精品国产91久久综合桃花|