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

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

?? pwr.c

?? windows ce 50 drive program
?? C
字號:
//
// 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:

    Drv.c   Power Controller Driver

Abstract:

   Streams interface driver (MDD)

Functions:

Notes:

--*/

#include <windows.h>
#include <winreg.h>
#include <winioctl.h>
#include <ceddk.h>
#include <devload.h>


#include <types.h>
#include <excpt.h>
#include <tchar.h>
#include <cardserv.h>
#include <cardapi.h>
#include <tuple.h>
#include <diskio.h>
#include <nkintr.h>
#include <oalintr.h>
#include <windev.h>
#include <winbase.h>

#include "pwr.h"

#include "s2440.h"
#include "drv_glob.h"

#ifndef SHIP_BUILD
DBGPARAM dpCurSettings = {
    TEXT("POWER"), {
    TEXT("Error"),     TEXT("Warn"),    TEXT("Init"),  TEXT("Open"),
    TEXT("Read"),      TEXT("Write"),   TEXT("IOCTL"), TEXT("IST"),
    TEXT("Registers"), TEXT("RegDump"), TEXT("ADC"),   TEXT("Battery"),
    TEXT("Events"),    TEXT("Power"),      TEXT("14"),    TEXT("Trace"),
    },
    0x0003 // ZONE_WRN|1
};
#endif  // DEBUG

BOOL
PWR_PowerUp(
   PVOID Context
   );

BOOL
PWR_PowerDown(
   PVOID Context
   );


BOOL
DllEntry(
    HINSTANCE   hinstDll,             /*@parm Instance pointer. */
    DWORD   dwReason,                 /*@parm Reason routine is called. */
    LPVOID  lpReserved                /*@parm system parameter. */
    )
{
    if ( dwReason == DLL_PROCESS_ATTACH ) {
        DEBUGREGISTER(hinstDll);
        RETAILMSG (1, (TEXT("PWR: Process Attach\r\n")));
    }

    if ( dwReason == DLL_PROCESS_DETACH ) {
        RETAILMSG (1, (TEXT("PWR: Process Detach\r\n")));
    }

    return(TRUE);
}


BOOL
PWR_Deinit(
   PPWR_CONTEXT pPWR
   )
{
    RETAILMSG(1, (TEXT(">PWR_Deinit\r\n")));

    if (!pPWR)
        return FALSE;
        
    HW_Deinit(pPWR);

    LocalFree(pPWR);

    RETAILMSG(1, (TEXT("<PWR_Deinit\r\n")));

    return TRUE;
}


/*++

Called by Device Manager to initialize the streams interface in response to ActivateDevice.
We passed ActivateDevice a pointer to our device context, but must read it out of the registry as "ClientInfo".

Returns context used in XXX_Open, XXX_PowerDown, XXX_PowerUp, and XXX_Deinit

--*/
PPWR_CONTEXT
PWR_Init(
   PVOID Context
   )
{
	LPTSTR ActivePath = (LPTSTR)Context; // HKLM\Drivers\Active\xx
	PPWR_CONTEXT pPWR;
	BOOL bRc = FALSE;

	RETAILMSG(1, (TEXT(">PWR_Init(%p)\r\n"), ActivePath));

	// Allocate for our main data structure and one of it's fields.
	pPWR = (PPWR_CONTEXT)LocalAlloc( LPTR, sizeof(PWR_CONTEXT) );
	if ( !pPWR )
		return( NULL );

	pPWR->Sig = PCF_SIG;

	// init h/w
	if ( ERROR_SUCCESS != HW_Init(pPWR) )
		goto ALLOCFAILED;

	pPWR->Dx = D0;

	RETAILMSG(1, (TEXT("<PWR_Init:0x%x\r\n"), pPWR ));

	return (pPWR);

ALLOCFAILED:
	PWR_Deinit(pPWR);

	return NULL;
}


PPWR_CONTEXT
PWR_Open(
   PPWR_CONTEXT pPWR,       // context returned by PWR_Init.
   DWORD        AccessCode, // @parm access code
   DWORD        ShareMode   // @parm share mode
   )
{
    UNREFERENCED_PARAMETER(ShareMode);
    UNREFERENCED_PARAMETER(AccessCode);

    RETAILMSG(1,(TEXT(">PWR_Open(0x%x, 0x%x, 0x%x)\r\n"),pPWR, AccessCode, ShareMode));

    pPWR->OpenCount++;

    HW_Open(pPWR);

    RETAILMSG(1,(TEXT("<PWR_Open:%u\r\n"), pPWR->OpenCount ));

    return pPWR;
}


BOOL
PWR_Close(
   PPWR_CONTEXT pPWR
   )
{
   RETAILMSG(1,(TEXT("PWR_Close(0x%x)\r\n"),pPWR));

    if ( pPWR->OpenCount ) {
        
        pPWR->OpenCount--;

        HW_Close(pPWR);
    }

    return TRUE;
}


ULONG
PWR_Write(
   PPWR_CONTEXT pPWR,
   PUCHAR pBuffer,
   ULONG  BufferLength
   )
{
    return 0;
}


ULONG
PWR_Read(
   PPWR_CONTEXT pPWR,
   PUCHAR pBuffer,
   ULONG  BufferLength
   )
{
   return 0;
}


BOOL
PWR_IOControl(
    PPWR_CONTEXT pPWR,
    DWORD dwCode,
    PBYTE pBufIn,
    DWORD dwLenIn,
    PBYTE pBufOut,
    DWORD dwLenOut,
    PDWORD pdwActualOut
   )
{
    DWORD dwErr = ERROR_SUCCESS;
    BOOL bRc = TRUE;

    RETAILMSG(1,(TEXT(">PWR_IOControl(0x%x, 0x%x, %d, 0x%x)\r\n"),
        dwCode, pBufIn, dwLenIn, pBufOut, dwLenOut ));

    if ( !pPWR->OpenCount ) {
        RETAILMSG (1,(TEXT(" COM_IOControl - device was closed\r\n")));
        SetLastError (ERROR_INVALID_HANDLE);
        return(FALSE);
    }

    switch (dwCode) {
        //
        // Power Management
        //
        case IOCTL_POWER_CAPABILITIES:
            if ( !pdwActualOut || !pBufOut || (dwLenOut < sizeof(POWER_CAPABILITIES)) ) {
                bRc = FALSE;
                dwErr = ERROR_INVALID_PARAMETER;
                break;
            }
            
            bRc = HW_PowerCapabilities(pPWR, (PPOWER_CAPABILITIES)pBufOut);
            if ( bRc ) {
                *pdwActualOut = sizeof(POWER_CAPABILITIES);
            }
            break;

        case IOCTL_POWER_SET: 
            if ( !pdwActualOut || !pBufOut || (dwLenOut < sizeof(CEDEVICE_POWER_STATE)) ) {
                bRc = FALSE;
                dwErr = ERROR_INVALID_PARAMETER;
                break;
            }

            bRc = HW_PowerSet(pPWR, (PCEDEVICE_POWER_STATE)pBufOut);
            if ( bRc ) {
                *pdwActualOut = sizeof(CEDEVICE_POWER_STATE);
            }
            break;

        case IOCTL_POWER_GET: 
            if ( !pdwActualOut || !pBufOut || (dwLenOut < sizeof(CEDEVICE_POWER_STATE)) ) {
                bRc = FALSE;
                dwErr = ERROR_INVALID_PARAMETER;
                break;
            }

            bRc = HW_PowerGet(pPWR, (PCEDEVICE_POWER_STATE)pBufOut);
            if ( bRc ) {
                *pdwActualOut = sizeof(CEDEVICE_POWER_STATE);
            }
            break;

        default:
            // passthruogh
            bRc  = HW_IOControl(pPWR, dwCode, pBufIn, dwLenIn, pBufOut, dwLenOut, pdwActualOut);
            break;            
    }

    if ( !bRc ) {
        RETAILMSG (1, (TEXT("PWR_IOControl ERROR: %u\r\n"), dwErr));
        SetLastError(dwErr);
    }

    RETAILMSG(1,(TEXT("<PWR_IOControl:%d\r\n"), bRc));

    return bRc;
}


ULONG
PWR_Seek(
   PVOID Context,
   LONG  Position,
   DWORD Type
   )
{
    UNREFERENCED_PARAMETER(Context);
    UNREFERENCED_PARAMETER(Position);
    UNREFERENCED_PARAMETER(Type);
    RETAILMSG( 1, (TEXT("PWR_Seek\r\n")));
    return (ULONG)-1;
}


BOOL
PWR_PowerUp(
   PVOID Context
   )
{
    return HW_PowerUp(Context);
}


BOOL
PWR_PowerDown(
   PVOID Context
   )
{
    return HW_PowerDown(Context);
}

// EOF

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲青青青在线视频| 亚洲同性同志一二三专区| 欧美午夜在线一二页| av在线播放成人| 成人av网址在线| 99精品欧美一区二区三区小说 | 亚洲第一电影网| 亚洲一区二区欧美日韩| 亚洲欧美激情插| 亚洲第一激情av| 奇米精品一区二区三区四区| 蜜桃视频第一区免费观看| 精品一区二区三区视频在线观看| 麻豆成人91精品二区三区| 国产乱一区二区| 99久久99久久久精品齐齐| 在线观看日产精品| 在线看国产一区| 欧美一区二区三区日韩| 久久久不卡影院| 亚洲啪啪综合av一区二区三区| 午夜欧美大尺度福利影院在线看| 麻豆成人综合网| 不卡电影一区二区三区| 欧美日韩二区三区| 久久久不卡影院| 亚洲一区在线观看视频| 久久爱另类一区二区小说| 成人深夜福利app| 69堂亚洲精品首页| 国产精品女同互慰在线看| 亚洲线精品一区二区三区八戒| 久久99国内精品| 99国产一区二区三精品乱码| 日韩一区二区三区电影| 最近中文字幕一区二区三区| 免费观看在线色综合| aaa欧美色吧激情视频| 911精品国产一区二区在线| 国产精品美女久久久久高潮 | 欧美久久一二三四区| 国产亚洲一区二区三区在线观看| 亚洲乱码国产乱码精品精的特点 | 亚洲三级小视频| 久久99久久99小草精品免视看| 成熟亚洲日本毛茸茸凸凹| 欧美日韩一二三| 亚洲欧洲在线观看av| 国产一区二区三区精品欧美日韩一区二区三区 | 中文字幕乱码亚洲精品一区| 亚洲123区在线观看| 不卡一区二区中文字幕| 日韩精品一区二区三区在线| 亚洲第一福利一区| 一本色道久久综合精品竹菊| 久久久精品蜜桃| 看电视剧不卡顿的网站| 日本二三区不卡| ...中文天堂在线一区| 国产高清精品在线| 精品999在线播放| 免费看精品久久片| 欧美精品自拍偷拍| 亚洲电影中文字幕在线观看| 91首页免费视频| 亚洲欧美在线视频| 成人高清视频免费观看| 国产色产综合色产在线视频| 精品一区二区三区久久| 欧美xxxxx牲另类人与| 强制捆绑调教一区二区| 制服丝袜国产精品| 婷婷丁香激情综合| 欧美一区中文字幕| 蜜桃视频一区二区三区| 日韩一区二区在线观看| 舔着乳尖日韩一区| 欧美精品久久一区二区三区| 日韩av一级电影| 精品少妇一区二区三区免费观看 | 欧美性视频一区二区三区| 亚洲精品成a人| 欧美日韩国产天堂| 奇米色777欧美一区二区| 欧美电视剧在线观看完整版| 激情久久久久久久久久久久久久久久 | 94-欧美-setu| 一级女性全黄久久生活片免费| 在线这里只有精品| 日韩av午夜在线观看| 久久久蜜桃精品| 色综合网站在线| 免费在线观看精品| 国产亚洲一本大道中文在线| 99久久婷婷国产综合精品 | www国产亚洲精品久久麻豆| 国产剧情一区二区| 亚洲色图欧美激情| 91精品国产黑色紧身裤美女| 国产美女在线精品| 亚洲欧洲制服丝袜| 欧美大片免费久久精品三p| 高清国产一区二区三区| 亚洲永久精品国产| 精品国产三级电影在线观看| 成人h动漫精品一区二区| 亚洲第一精品在线| 中文一区在线播放| 欧美二区乱c少妇| av欧美精品.com| 奇米四色…亚洲| 日韩毛片高清在线播放| 日韩一级视频免费观看在线| 99精品久久只有精品| 久久99精品久久久久婷婷| 亚洲欧美另类久久久精品2019| 日韩欧美中文字幕公布| 99久久综合99久久综合网站| 亚洲成在人线免费| 国产精品久久福利| 26uuu国产日韩综合| 欧美日韩亚洲综合在线| 成人免费看黄yyy456| 欧美aⅴ一区二区三区视频| 亚洲天堂久久久久久久| 欧美不卡一区二区| 欧美疯狂做受xxxx富婆| 91浏览器打开| 成人精品一区二区三区中文字幕| 久久精品久久综合| 午夜视频在线观看一区二区三区| 国产精品电影一区二区| 久久综合九色综合欧美98| 制服丝袜成人动漫| 在线免费观看日本欧美| 91在线看国产| 成人激情校园春色| 国产精品一区二区三区99| 久久er精品视频| 男人的j进女人的j一区| 午夜精彩视频在线观看不卡| 亚洲一区二区三区小说| 亚洲欧洲综合另类在线| 亚洲人精品一区| 亚洲视频精选在线| 中文字幕制服丝袜一区二区三区 | 国产精品你懂的在线| 久久久亚洲欧洲日产国码αv| 日韩一级视频免费观看在线| 9191成人精品久久| 欧美一级精品大片| 日韩欧美中文字幕公布| 精品国产成人系列| 久久网站热最新地址| 久久久亚洲高清| 欧美激情一区二区三区| 国产精品视频线看| 樱花影视一区二区| 亚洲午夜三级在线| 七七婷婷婷婷精品国产| 极品少妇xxxx精品少妇| 国产成人日日夜夜| 91亚洲精品久久久蜜桃| 在线观看区一区二| 日韩午夜在线影院| 久久综合色婷婷| 日韩毛片高清在线播放| 亚洲小说春色综合另类电影| 日本午夜精品一区二区三区电影 | 一区二区高清在线| 午夜电影网一区| 国内欧美视频一区二区| www.亚洲色图.com| 欧美视频一区二区三区四区 | 亚洲成人av一区二区三区| 日本亚洲免费观看| 粉嫩av亚洲一区二区图片| 日本高清不卡在线观看| 91精品久久久久久久91蜜桃| 久久一区二区视频| 一区二区三区国产精品| 理论片日本一区| 91视频你懂的| 欧美一级高清片| 亚洲欧洲三级电影| 日本欧美久久久久免费播放网| 国产精品一区二区在线观看不卡 | 国产精品福利一区二区| 日欧美一区二区| 成人一区二区三区| 欧美区一区二区三区| 久久影院视频免费| 午夜成人在线视频| 99久久婷婷国产| 精品乱人伦一区二区三区| 亚洲日本一区二区| 国产九九视频一区二区三区| 欧美亚洲丝袜传媒另类| 中文av一区特黄| 激情综合网天天干|