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

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

?? usbfx2lk.h

?? VisualC++寫的一個USB的驅動程序。
?? H
?? 第 1 頁 / 共 2 頁
字號:
///////////////////////////////////////////////////////////////////////////////
//
//    (C) Copyright 2005 OSR Open Systems Resources, Inc.
//    All Rights Reserved
//
//    This sofware is supplied for instructional purposes only.
//
//    OSR Open Systems Resources, Inc. (OSR) expressly disclaims any warranty
//    for this software.  THIS SOFTWARE IS PROVIDED  "AS IS" WITHOUT WARRANTY
//    OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
//    THE IMPLIED WARRANTIES OF MECHANTABILITY OR FITNESS FOR A PARTICULAR
//    PURPOSE.  THE ENTIRE RISK ARISING FROM THE USE OF THIS SOFTWARE REMAINS
//    WITH YOU.  OSR's entire liability and your exclusive remedy shall not
//    exceed the price paid for this material.  In no event shall OSR or its
//    suppliers be liable for any damages whatsoever (including, without
//    limitation, damages for loss of business profit, business interruption,
//    loss of business information, or any other pecuniary loss) arising out
//    of the use or inability to use this software, even if OSR has been
//    advised of the possibility of such damages.  Because some states/
//    jurisdictions do not allow the exclusion or limitation of liability for
//    consequential or incidental damages, the above limitation may not apply
//    to you.
//
//    OSR Open Systems Resources, Inc.
//    105 Route 101A Suite 19
//    Amherst, NH 03031  (603) 595-6500 FAX: (603) 595-6503
//    email bugs to: bugs@osr.com
//
//
//    MODULE:
//
//        USBFX2LK.H
//
//    ABSTRACT:
//
//		This is the general include file for the OSR USB FX2 Learning Kit Driver.
//
//    AUTHOR(S):
//
//        OSR Open Systems Resources, Inc.
// 
///////////////////////////////////////////////////////////////////////////////
#ifndef __USBFX2LK_H__
#define __USBFX2LK_H__ (1) // suppress duplicate loading of this file

extern "C" {

#include <ntddk.h>
#include <initguid.h>
#include <ntstrsafe.h>
#include <csq.h>
#include <limits.h>
#include <wmistr.h>
#include <wmilib.h>
#include <wmidata.h>

//
// 4200: nonstandard extension used.
//
// We like to build with the .CPP suffix in order to
//  get the strong type checking and various other benefits
//  of the C++ compiler, but unforunately the USB headers
//  don't compile correctly when included. We must disable
//  this warning in order to make things work properly.
//
#pragma warning(push)
#pragma warning(disable : 4200)
#include <usbdi.h>
#pragma warning(pop)

#include <usbdlib.h>

#ifndef W2K
#include <usbbusif.h>
#endif
};

#include "usbfx2lk_ioctl.h"
#include "usbfx2lk_mofdata.h"


//
// Define Driver Name to be used in outputting debug messages.
//
#define DRIVER_NAME "OSRUSBFX2"

//
// Debugging Output Levels
//

#ifndef TRACE_LEVEL_INFORMATION
#define TRACE_LEVEL_NONE        0   // Tracing is not on
#define TRACE_LEVEL_FATAL       1   // Abnormal exit or termination
#define TRACE_LEVEL_ERROR       2   // Severe errors that need logging
#define TRACE_LEVEL_WARNING     3   // Warnings such as allocation failure
#define TRACE_LEVEL_INFORMATION 4   // Includes non-error cases(e.g.,Entry-Exit)
#define TRACE_LEVEL_VERBOSE     5   // Detailed traces from intermediate steps
#define TRACE_LEVEL_RESERVED6   6
#define TRACE_LEVEL_RESERVED7   7
#define TRACE_LEVEL_RESERVED8   8
#define TRACE_LEVEL_RESERVED9   9
#endif // TRACE_LEVEL_INFORMATION

//
// WPP_TRACING is enabled or disabled in the SOURCES file
//
#ifdef WPP_TRACING

#define WPP_CONTROL_GUIDS \
  WPP_DEFINE_CONTROL_GUID(USBFX2LK,(AC072299,57FA,46e9,BF59,E9E649182794), \
    WPP_DEFINE_BIT(OSRDBG_PNP_INFO)                /*0x00000001*/ \
    WPP_DEFINE_BIT(OSRDBG_IOCTL_INFO)              /*0x00000002*/ \
    WPP_DEFINE_BIT(OSRDBG_CREATE_CLOSE_INFO)       /*0x00000004*/ \
    WPP_DEFINE_BIT(OSRDBG_POWER_INFO)              /*0x00000008*/ \
    WPP_DEFINE_BIT(OSRDBG_WMI_INFO)                /*0x00000010*/ \
    WPP_DEFINE_BIT(OSRDBG_READWRITE)               /*0x00000020*/ \
    WPP_DEFINE_BIT(OSRDBG_REFERENCE_COUNT)         /*0x00000040*/ \
    WPP_DEFINE_BIT(OSRDBG_USB)                     /*0x00000080*/ \
    WPP_DEFINE_BIT(OSRDBG_SELECTIVE_SUSPEND)       /*0x00000100*/ \
    WPP_DEFINE_BIT(OSRDBG_WAIT_WAKE)               /*0x00000200*/ \
    WPP_DEFINE_BIT(OSRDBG_WAIT_FOR_OBJECT)         /*0x00000400*/ \
    )

#define WPP_LEVEL_FLAGS_LOGGER(lvl,flags) \
    WPP_LEVEL_LOGGER(flags)

#define WPP_LEVEL_FLAGS_ENABLED(lvl, flags) \
    (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= lvl)

#else // WPP_TRACING

#define OSRDBG_PNP_INFO                0x00000001
#define OSRDBG_IOCTL_INFO              0x00000002
#define OSRDBG_CREATE_CLOSE_INFO       0x00000004
#define OSRDBG_POWER_INFO              0x00000008
#define OSRDBG_WMI_INFO                0x00000010
#define OSRDBG_READWRITE               0x00000020
#define OSRDBG_REFERENCE_COUNT         0x00000040
#define OSRDBG_USB                     0x00000080
#define OSRDBG_SELECTIVE_SUSPEND       0x00000100
#define OSRDBG_WAIT_WAKE               0x00000200
#define OSRDBG_WAIT_FOR_OBJECT         0x00000400

#define OsrTracePrint(_level,_flag_,_msg_)      \
    if (OsrDebugLevel & (_flag_)) {     \
        DbgPrint (DRIVER_NAME": ");    \
        DbgPrint _msg_;                 \
    }

#endif //WPP_TRACING


////////////////////
// Shared Globals //
////////////////////

extern UNICODE_STRING GlobalRegistryPath;
extern ULONG          OsrDebugLevel;

//
// Handy Dandy Time Macros
//

#define ABSOLUTE(wait) (wait)

#define RELATIVE(wait) (-(wait))

#define NANOSECONDS(nanos) \
(((signed __int64)(nanos)) / 100L)

#define MICROSECONDS(micros) \
(((signed __int64)(micros)) * NANOSECONDS(1000L))

#define MILLISECONDS(milli) \
(((signed __int64)(milli)) * MICROSECONDS(1000L))

#define SECONDS(seconds) \
(((signed __int64)(seconds)) * MILLISECONDS(1000L))

#define IRP_MN_BOGUS 0xFF


//
// We are using a quad buffered buffer for bulk 
//  transfers on the USBFX2LK firmware. Therefore,
//  we'll limit our bulk transfers to the maximum
//  packet size returned from the device * 4
//
#define USBFX2LK_BULK_TRANSFER_FW_BUFFERING 4


typedef struct _USBFX2LK_PIPE_CONTEXT {

    USBD_PIPE_INFORMATION   PipeInformation;    // Information about Pipe

} USBFX2LK_PIPE_CONTEXT, *PUSBFX2LK_PIPE_CONTEXT;

//
// PnP Device States used by Driver.
//
typedef enum _PNP_DEVICE_STATE {

    //
    // In STATE_REMOVED, we immediately fail any received I/O requests
    //
    STATE_REMOVED                   = 0x00000000,

    //
    // In STATE_SURPRISE_REMOVED, we immediately fail all incoming requests
    //
    STATE_SURPRISE_REMOVED          = 0x00010000,

    //
    // In STATE_NEVER_STARTED, we immediately fail all incoming requests
    //
    STATE_NEVER_STARTED             = 0x00020000,

    //
    // Dummy State -- When the state is < this value, no H/W access is
    // allowed
    //
    STATE_ALL_BELOW_NO_HW           = 0x00030000,   // ******************

    //
    // Dummy state -- When an IRP arrives at the driver, if the current
    // device state is below this value, it is immediately failed
    //
    STATE_ALL_BELOW_FAIL            = 0x00FF0000,   // ******************

    //
    // In STATE_STARTED, requests are processed and removed from the
    // queues normally
    //
    STATE_STARTED                   = 0x01210000,

    //
    // Dummy state -- When an IRP arrives at the driver, if the current
    // device state is above this value, it is queued, not initiated on
    // the device (even if the device is free)
    //
    STATE_ALL_ABOVE_QUEUE           = 0x0FFF0000,   // ******************

    //
    // Dummy State -- When an IRP is COMPLETED on the device, if
    // the device state is below this value, we'll start another
    // IRP in an attempt to drain the queue of pending requests.
    //
    STATE_ALL_BELOW_DRAIN           = STATE_ALL_ABOVE_QUEUE,    // ******************

    //
    // In STATE_STOP_PENDING, we queue incoming requests
    //
    STATE_STOP_PENDING              = 0x10000000,


    //
    // In STATE_REMOVE_PENDING, we queue incoming requests
    //
    STATE_REMOVE_PENDING            = 0x10010000,


    //
    // In STATE_STOPPED, we queue incoming requests
    //
    STATE_STOPPED                   = 0x10100000,

    //
    // In STATE_POWER_PROCESSING, we queue incoming requests
    //
    STATE_POWER_PROCESSING          = 0x11000000,

} PNP_DEVICESTATE, *PPNPDEVICE_STATE;

//
// Define the vendor commands supported by our device
//
#define USBFX2LK_READ_7SEGMENT_DISPLAY      0xD4
#define USBFX2LK_READ_SWITCHES              0xD6
#define USBFX2LK_READ_BARGRAPH_DISPLAY      0xD7
#define USBFX2LK_SET_BARGRAPH_DISPLAY       0xD8
#define USBFX2LK_IS_HIGH_SPEED              0xD9
#define USBFX2LK_REENUMERATE                0xDA
#define USBFX2LK_SET_7SEGMENT_DISPLAY       0xDB

//
// Define the features that we can clear
//  and set on our device
//
#define USBFX2LK_FEATURE_EPSTALL            0x00
#define USBFX2LK_FEATURE_WAKE               0x01

//
// Define the constants used in selective 
//  suspend
//

//
// Our selective suspend states
//
#define SS_NOT_STARTED              0x7777
#define SS_PROCESSING               0x8888
#define SS_SUSPENDED                0x9999

//
// The amount of time that the device should
//  be idle before suspending
//  
// We'll use 5 seconds
//
#define SS_DEVICE_IDLE_DELAY        (ABSOLUTE(SECONDS(5)))




//
// USBFx2Lk Device Extension
//
typedef struct _USBFX2LK_EXT {
    ULONG                           MagicNumber;

    // 
    // Address of Our Device Object
    //
    PDEVICE_OBJECT                  FunctionalDeviceObject;

    //
    // Address of PDO that was passed to our AddDevice Entry Point
    //
    PDEVICE_OBJECT                  PhysicalDeviceObject;

    //
    // Address of PDO that we actually attached to in our
    // AddDevice Entry Point.  This is who we forward PnP and Power
    // Irps to.
    //
    PDEVICE_OBJECT                  DeviceToSendIrpsTo;

    //
    // Name buffer for our named Functional device object link
    // The name is generated based on the driver's class GUID
    //
    UNICODE_STRING                  InterfaceName;
    ULONG                           InstanceNumber;
    BOOLEAN                         Opened;

    //
    // Bus drivers set the appropriate values in this structure in response
    // to an IRP_MN_QUERY_CAPABILITIES IRP. Function and filter drivers might
    // alter the capabilities set by the bus driver.
    //
    DEVICE_CAPABILITIES             DeviceCapabilities;
    BOOLEAN                         DeviceCapabilitiesInitialized;

    //
    // Device descriptor
    //
    PUSB_DEVICE_DESCRIPTOR          UsbDeviceDescriptor;

    //
    // Configuration Descriptor
    //
    PUSB_CONFIGURATION_DESCRIPTOR   UsbConfigurationDescriptor;

    //
    // Interface Information structure

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美猛男gaygay网站| 日韩欧美综合一区| 粉嫩高潮美女一区二区三区| 久久精品久久综合| 日韩黄色免费电影| 日韩精品电影一区亚洲| 午夜日韩在线电影| 日韩精品免费专区| 美女mm1313爽爽久久久蜜臀| 黄色小说综合网站| 国v精品久久久网| 成人免费看视频| 色综合亚洲欧洲| 欧美调教femdomvk| 欧美三级在线播放| 日韩视频免费观看高清完整版 | 色噜噜狠狠一区二区三区果冻| 成人黄色在线看| fc2成人免费人成在线观看播放| 成人激情电影免费在线观看| 91一区在线观看| 97se亚洲国产综合在线| 在线观看日韩精品| 欧美日韩一级二级| 久久久精品影视| 国产精品不卡一区| 亚洲图片有声小说| 久久成人久久鬼色| 成人av午夜影院| 日本韩国视频一区二区| 欧美一区二区在线不卡| 精品国产乱码久久久久久图片| 2019国产精品| 亚洲图片另类小说| 亚洲v日本v欧美v久久精品| 久久99热狠狠色一区二区| 成人免费视频caoporn| 欧美久久婷婷综合色| 精品日韩在线一区| 亚洲乱码中文字幕| 国产美女主播视频一区| 欧美网站一区二区| 国产肉丝袜一区二区| 亚洲国产精品尤物yw在线观看| 日韩成人午夜精品| 成人小视频免费在线观看| 欧美喷水一区二区| 国产精品国产三级国产aⅴ中文 | www欧美成人18+| 亚洲欧美日本韩国| 狠狠狠色丁香婷婷综合久久五月| 色网站国产精品| 国产色婷婷亚洲99精品小说| 蜜桃在线一区二区三区| 在线观看成人免费视频| 日本一区二区三级电影在线观看 | 3atv一区二区三区| 亚洲人成伊人成综合网小说| 久久草av在线| 欧美丰满少妇xxxxx高潮对白| 91婷婷韩国欧美一区二区| 日韩一级高清毛片| 亚洲人成小说网站色在线| 日韩中文字幕av电影| 99国内精品久久| 国产精品一区二区在线播放 | 日日摸夜夜添夜夜添国产精品| 日韩一区二区麻豆国产| 国产91综合网| 夜色激情一区二区| 欧美精品一区二区三区在线| 成人av在线资源| 日本伊人精品一区二区三区观看方式| 精品国产网站在线观看| 99久久综合精品| 久久99日本精品| 亚洲激情男女视频| 2021久久国产精品不只是精品| 99在线视频精品| 五月天丁香久久| 日本一区二区综合亚洲| 91精品国产91热久久久做人人| 国产成人综合在线| 日本强好片久久久久久aaa| 国产精品美女视频| 日韩午夜三级在线| 欧美怡红院视频| 懂色av一区二区在线播放| 日本成人在线看| 亚洲精品乱码久久久久久日本蜜臀| 日韩女优av电影在线观看| 在线免费观看日本欧美| 国产在线不卡一区| 日本成人在线电影网| 亚洲黄色小视频| 国产精品久久久久久妇女6080| 日韩精品一区二区在线| 欧美三电影在线| 色噜噜久久综合| 不卡一二三区首页| 成人午夜在线播放| 国产一区二区免费在线| 另类小说一区二区三区| 日本aⅴ精品一区二区三区 | 国产香蕉久久精品综合网| 精品三级av在线| 欧美一区二区免费视频| 在线成人av影院| 欧美高清视频不卡网| 欧美在线不卡一区| 欧美亚洲日本一区| 欧美视频中文一区二区三区在线观看| 99麻豆久久久国产精品免费 | 久久精品国产秦先生| 亚洲国产人成综合网站| 亚洲永久精品国产| 亚洲成在线观看| 日韩精品一二区| 麻豆久久一区二区| 精品一区二区三区在线观看| 久久国产综合精品| 玖玖九九国产精品| 国产乱码精品一区二区三区av | 欧美精品一区二区三| 精品欧美乱码久久久久久| 精品国产人成亚洲区| 久久伊99综合婷婷久久伊| 国产香蕉久久精品综合网| 国产精品第四页| 一区二区三区日韩在线观看| 一区二区三区在线高清| 亚洲丶国产丶欧美一区二区三区| 日日夜夜一区二区| 精品一二三四区| 成人小视频免费在线观看| 色94色欧美sute亚洲线路一ni | 91美女在线视频| 欧美浪妇xxxx高跟鞋交| 欧美大胆一级视频| 欧美激情中文不卡| 亚洲在线视频免费观看| 免费的成人av| 成a人片国产精品| 欧美日韩精品二区第二页| 日韩精品一区二区三区四区视频 | 亚洲精品一区二区在线观看| 国产欧美一区二区精品秋霞影院| 中文字幕一区免费在线观看| 亚洲高清免费一级二级三级| 国精产品一区一区三区mba视频| 成年人国产精品| 日韩一区二区三区四区| 国产亚洲精品超碰| 亚洲成国产人片在线观看| 国产成人一级电影| 欧美日韩一区小说| 国产欧美精品在线观看| 丝袜亚洲另类欧美| 成人午夜碰碰视频| 欧美一区二区三区在线视频| 欧美国产综合色视频| 亚洲va欧美va人人爽午夜| 国产.精品.日韩.另类.中文.在线.播放| 色94色欧美sute亚洲13| 久久综合九色综合97婷婷女人| 亚洲综合免费观看高清完整版 | 久久久国产一区二区三区四区小说| 亚洲色图欧洲色图| 国模一区二区三区白浆| 欧美日韩久久一区| 中文字幕一区二区三区四区| 日本系列欧美系列| 欧美日韩综合一区| 综合久久国产九一剧情麻豆| 韩国av一区二区三区| 91精品一区二区三区在线观看| 最好看的中文字幕久久| 国产一区在线精品| 91精品欧美综合在线观看最新| 国产精品久久久久久久久图文区| 久久国产精品色| 欧美日韩国产天堂| 亚洲老司机在线| 99免费精品在线观看| 中文字幕av一区二区三区| 国产一区二区三区四区五区入口 | 国产精品自拍在线| 欧美一级淫片007| 亚洲成国产人片在线观看| av不卡在线播放| 国产精品网站在线| 国产一本一道久久香蕉| 亚洲精品一区二区三区精华液| 视频一区二区中文字幕| 欧美丝袜第三区| 亚洲自拍另类综合| 欧美日韩久久一区二区| 午夜影院在线观看欧美| 欧美日韩国产精品自在自线| 婷婷开心久久网|