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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? escpos.c

?? 微軟的point of sale的源代碼
?? C
字號:
/*++

Copyright (c) 1999  Microsoft Corporation

Module Name:

    filter.c

Abstract: ESC/POS (serial) interface for USB Point-of-Sale devices

Author:

    ervinp

Environment:

    Kernel mode

Revision History:


--*/

#include <WDM.H>

#include <usbdi.h>
#include "usbdlib.h"
#include <usbioctl.h>

#include "escpos.h"
#include "debug.h"

#ifdef ALLOC_PRAGMA
        #pragma alloc_text(INIT, DriverEntry)
        #pragma alloc_text(PAGE, AddDevice)
        #pragma alloc_text(PAGE, DriverUnload)
#endif


BOOLEAN isWin9x = FALSE;

NTSTATUS DriverEntry(
                        IN PDRIVER_OBJECT DriverObject, 
                        IN PUNICODE_STRING RegistryPath
                    )
/*++

Routine Description:

    Installable driver initialization entry point.
    This entry point is called directly by the I/O system.

Arguments:

    DriverObject - pointer to the driver object

    RegistryPath - pointer to a unicode string representing the path,
                   to driver-specific key in the registry.

Return Value:

    STATUS_SUCCESS if successful,
    STATUS_UNSUCCESSFUL otherwise

--*/
{
    ULONG i;

    PAGED_CODE();

    UNREFERENCED_PARAMETER(RegistryPath);

    DBGVERBOSE(("DriverEntry")); 

    isWin9x = IsWin9x();

    /*
     *  Route all IRPs on device objects created by this driver
     *  to our IRP dispatch routine.
     */
    for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++){
        DriverObject->MajorFunction[i] = Dispatch; 
    }

    DriverObject->DriverExtension->AddDevice = AddDevice;
    DriverObject->DriverUnload = DriverUnload;

    return STATUS_SUCCESS;
}


NTSTATUS AddDevice(
                        IN PDRIVER_OBJECT driverObj, 
                        IN PDEVICE_OBJECT physicalDevObj
                     )
/*++

Routine Description:

    The PlugPlay subsystem is handing us a brand new 
    PDO (Physical Device Object), for which we
    (by means of INF registration) have been asked to filter.

    We need to determine if we should attach or not.
    Create a filter device object to attach to the stack
    Initialize that device object
    Return status success.

    Remember: we can NOT actually send ANY non pnp IRPS to the given driver
    stack, UNTIL we have received an IRP_MN_START_DEVICE.

Arguments:

    driverObj - pointer to a device object.

    physicalDevObj -    pointer to a physical device object pointer 
                        created by the  underlying bus driver.

Return Value:

    NT status code.

--*/

{
    NTSTATUS status;
	PDEVICE_OBJECT functionDevObj = NULL;

    PAGED_CODE();

    DBGVERBOSE(("AddDevice: drvObj=%ph, pdo=%ph", driverObj, physicalDevObj)); 

	status = IoCreateDevice(    driverObj, 
								sizeof(DEVEXT),
								NULL,							// name for this device
								FILE_DEVICE_SERIAL_PORT, 
								0,								// device characteristics
								TRUE,							// exclusive
								&functionDevObj);				// our device object

	if (NT_SUCCESS(status)){
		DEVEXT *devExt;
		PARENTFDOEXT *parentFdoExt;

		ASSERT(functionDevObj);

		/*
		 *  Initialize device extension for new device object
		 */
		devExt = (DEVEXT *)functionDevObj->DeviceExtension;
		RtlZeroMemory(devExt, sizeof(DEVEXT));

		devExt->signature = DEVICE_EXTENSION_SIGNATURE;
		devExt->isPdo = FALSE;

		parentFdoExt = &devExt->parentFdoExt;

		parentFdoExt->state = STATE_INITIALIZED;
		parentFdoExt->functionDevObj = functionDevObj;
		parentFdoExt->physicalDevObj = physicalDevObj;
		parentFdoExt->driverObj = driverObj;
		parentFdoExt->pendingActionCount = 0;

		KeInitializeEvent(&parentFdoExt->removeEvent, NotificationEvent, FALSE);

		KeInitializeSpinLock(&parentFdoExt->devExtSpinLock);

		/*
		 *  Clear the initializing bit from the new device object's flags.
		 */
		functionDevObj->Flags &= ~DO_DEVICE_INITIALIZING;

		/*
		 *  The DO_POWER_PAGABLE bit of a device object
		 *  indicates to the kernel that the power-handling
		 *  code of the corresponding driver is pageable, and
		 *  so must be called at IRQL 0.
		 *  As a filter driver, we do not want to change the power
		 *  behavior of the driver stack in any way; therefore,
		 *  we copy this bit from the lower device object.
		 */
		ASSERT(!(functionDevObj->Flags & DO_POWER_PAGABLE)); 
		functionDevObj->Flags |= (physicalDevObj->Flags & DO_POWER_PAGABLE);

		/*
		 *  Attach the new device object to the top of the device stack.
		 */
		parentFdoExt->topDevObj = IoAttachDeviceToDeviceStack(functionDevObj, physicalDevObj);

		ASSERT(parentFdoExt->topDevObj);
		DBGVERBOSE(("created fdo %ph attached to %ph.", functionDevObj, parentFdoExt->topDevObj));

	} 

    ASSERT(NT_SUCCESS(status));
    return status;
}


VOID DriverUnload(IN PDRIVER_OBJECT DriverObject)
/*++

Routine Description:

    Free all the allocated resources, etc.

    Note:  Although the DriverUnload function often does nothing,
           the driver must set a DriverUnload function in 
           DriverEntry; otherwise, the kernel will never unload
           the driver.

Arguments:

    DriverObject - pointer to a driver object.

Return Value:

    VOID.

--*/
{
    PAGED_CODE();

    DBGVERBOSE(("DriverUnload")); 
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久影院老司| 欧美日韩在线播放三区四区| 久久亚洲精精品中文字幕早川悠里 | 欧美伦理电影网| 亚洲电影中文字幕在线观看| 欧美自拍丝袜亚洲| 日本aⅴ免费视频一区二区三区| 日韩免费视频一区二区| 国产乱码精品一品二品| 中文字幕一区二| 欧美在线999| 麻豆精品久久精品色综合| 久久久亚洲精品一区二区三区| 国产ts人妖一区二区| 一区二区三区免费看视频| 欧美麻豆精品久久久久久| 国内精品伊人久久久久av影院| 中文在线资源观看网站视频免费不卡| 91女人视频在线观看| 男男gaygay亚洲| 国产精品色在线观看| 欧美亚洲综合在线| 国产乱色国产精品免费视频| 综合久久久久久久| 5858s免费视频成人| 成人理论电影网| 日本在线不卡视频一二三区| 国产亚洲自拍一区| 欧美日韩中文另类| 国产成人亚洲综合色影视| 亚洲国产欧美另类丝袜| 国产区在线观看成人精品 | 中文字幕一区不卡| 日韩一区二区在线观看视频播放| 东方aⅴ免费观看久久av| 亚洲电影在线播放| 国产精品人妖ts系列视频| 777色狠狠一区二区三区| bt7086福利一区国产| 久国产精品韩国三级视频| 亚洲靠逼com| 久久精品一区四区| 欧美精品在线观看播放| 91丨porny丨国产| 精品一区免费av| 天堂在线亚洲视频| 亚洲男人都懂的| 久久久电影一区二区三区| 欧美日韩成人综合| 日本高清免费不卡视频| 成人性生交大片免费看在线播放 | 久久精品免费在线观看| 欧美日韩在线免费视频| 99久久国产综合精品麻豆| 国产一区二三区| 日精品一区二区三区| 一区二区三区在线视频免费 | 丝袜美腿亚洲色图| 一区二区欧美在线观看| 国产精品久久久久毛片软件| 久久美女高清视频| 日韩精品一区二| 日韩三级视频中文字幕| 欧美三级日韩三级| 日本精品一级二级| 99久久99精品久久久久久| 成人免费精品视频| 粗大黑人巨茎大战欧美成人| 国产精品99久久久久| 国产在线播放一区二区三区| 精品一二三四在线| 麻豆国产精品一区二区三区| 首页欧美精品中文字幕| 日韩成人一级片| 免费观看一级特黄欧美大片| 久久激情五月激情| 国产精品性做久久久久久| 国产精品一二三四| av一区二区三区在线| jvid福利写真一区二区三区| av在线一区二区三区| av中文字幕一区| 在线免费观看成人短视频| 色综合久久久久综合体桃花网| 91视频免费看| 欧洲精品中文字幕| 777亚洲妇女| 精品国偷自产国产一区| 国产三级精品三级在线专区| 国产精品色在线| 亚洲一区免费视频| 日韩精品国产欧美| 国产一区二区三区| av动漫一区二区| 欧美日本在线播放| 欧美大片在线观看一区二区| 日本福利一区二区| 欧美一区二区在线不卡| 久久久久久久久伊人| 自拍av一区二区三区| 午夜精品久久久久久久| 国产一区二区精品在线观看| 成人免费av网站| 欧美午夜精品久久久久久超碰| 欧美丰满嫩嫩电影| 欧美国产在线观看| 亚洲午夜一区二区三区| 精品一区二区三区在线播放 | 久久综合九色欧美综合狠狠| 精品盗摄一区二区三区| 中文字幕不卡一区| 五月激情六月综合| 国产精品性做久久久久久| 91福利小视频| 精品国产一区久久| 一区二区三区电影在线播| 麻豆免费看一区二区三区| aaa亚洲精品| 日韩一级大片在线观看| 亚洲色图清纯唯美| 久久精品免费看| 色欧美乱欧美15图片| 精品国免费一区二区三区| 亚洲激情第一区| 国产成人综合在线| 欧美精品欧美精品系列| 国产精品二三区| 国内精品久久久久影院一蜜桃| 欧美在线小视频| 国产精品视频看| 久草精品在线观看| 91超碰这里只有精品国产| 亚洲欧美怡红院| 国产精品自在在线| 91精品国产综合久久精品麻豆| 一区在线中文字幕| 国产麻豆精品在线观看| 欧美高清你懂得| 亚洲综合色在线| jlzzjlzz国产精品久久| 久久久久国产精品麻豆ai换脸| 香蕉影视欧美成人| 色偷偷一区二区三区| 国产精品欧美一区二区三区| 激情综合亚洲精品| 欧美电影免费观看高清完整版| 亚洲大片免费看| 欧美影视一区二区三区| 亚洲女性喷水在线观看一区| 国产精品一区二区在线播放 | 国产精品久久久久久久久动漫 | 国产精品123区| 欧美成人video| 日本vs亚洲vs韩国一区三区二区 | 国产亚洲一区二区在线观看| 三级不卡在线观看| 国产精品麻豆99久久久久久| 久久精品99国产精品日本| 777久久久精品| 日韩精品欧美成人高清一区二区| 欧美性大战久久| 一区二区三区在线播| 日本精品视频一区二区| 亚洲欧洲中文日韩久久av乱码| 91片黄在线观看| 有码一区二区三区| 色偷偷一区二区三区| 亚洲综合一区在线| 欧美日韩亚洲国产综合| 五月婷婷欧美视频| 日韩一级片在线观看| 麻豆极品一区二区三区| 久久伊人中文字幕| 成人午夜精品在线| 1024成人网色www| 91久久线看在观草草青青| 亚洲二区在线观看| 日韩久久精品一区| 国产成人h网站| 亚洲天堂福利av| 欧美性一级生活| 日本视频一区二区| 久久久99久久| 91麻豆视频网站| 午夜一区二区三区在线观看| 51精品视频一区二区三区| 激情综合色播五月| 国产欧美精品一区二区色综合 | 一区二区三区欧美| 欧美久久一二区| 国产在线观看一区二区| 国产成人日日夜夜| 国产精品美女久久久久久久久| 91免费看视频| 喷白浆一区二区| 亚洲天堂久久久久久久| 在线播放亚洲一区| 国产麻豆视频精品| 一级特黄大欧美久久久| 久久亚洲私人国产精品va媚药|