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

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

?? usbdriver.h

?? 《usb原理與工程開發(fā)》中幾個(gè)開發(fā)實(shí)例的代碼
?? H
字號(hào):
//#ifdef DRIVER和ENDIF的部分是開發(fā)設(shè)備驅(qū)動(dòng)程序所專用的,他們不能在Win32應(yīng)用程序中使用,所以加上了該屏蔽。 
//也就是說,該頭文件也可在Win32應(yīng)用程序中直接使用,而且也的確使用了。當(dāng)然,也可以在Win32應(yīng)用程序中把不
//需要的部分直接去除。

#ifndef USBDRIVER_H
#define USBDRIVER_H
#endif

#ifdef DRIVER
#include "wdm.h"
#include "usbdi.h"
#include "usbdlib.h"
#include <resource.h>
#endif

#ifndef _BYTE_DEFINED
#define _BYTE_DEFINED
typedef unsigned char BYTE;
#endif // !_BYTE_DEFINED

#ifndef _WORD_DEFINED
#define _WORD_DEFINED
typedef unsigned short WORD;
#endif // !_WORD_DEFINED

typedef struct _GET_STRING_DESCRIPTOR_IN
{
   UCHAR    Index;
   USHORT   LanguageId;
} GET_STRING_DESCRIPTOR_IN, *PGET_STRING_DESCRIPTOR_IN;

typedef struct _ISO_TRANSFER_CONTROL
{
   // pipe number to perform the ISO transfer to/from.  Direction is
   // implied by the pipe number.
   ULONG PipeNum;

   // ISO packet size.  Determines how much data is transferred each
   // frame.  Should be less than or equal to the maxpacketsize for
   // the endpoint.
   ULONG PacketSize;

   // Total number of ISO packets to transfer.
   ULONG PacketCount;

   // The following two parameters detmine how buffers are managed for
   // an ISO transfer.  In order to maintain an ISO stream, the driver
   // must create at least 2 transfer buffers and ping pong between them.
   // BufferCount determines how many buffers the driver creates to ping
   // pong between.  FramesPerBuffer specifies how many USB frames of data
   // are transferred by each buffer.
   ULONG FramesPerBuffer;     // 10 is a good value
   ULONG BufferCount;         // 2 is a good value
} ISO_TRANSFER_CONTROL, *PISO_TRANSFER_CONTROL;


#ifdef DRIVER

typedef struct _RING_BUFFER
{
   PUCHAR      inPtr;
   PUCHAR      outPtr;
   ULONG       totalSize;
   ULONG       currentSize;
   KSPIN_LOCK	spinLock;
   PUCHAR      buffer;
} RING_BUFFER, *PRING_BUFFER;

typedef struct _ISO_STREAM_OBJECT ISO_STREAM_OBJECT, *PISO_STREAM_OBJECT;

typedef struct _ISO_TRANSFER_OBJECT
{
   ULONG Frame;
   PISO_STREAM_OBJECT StreamObject;
   PURB Urb;
   PIRP Irp;
   KEVENT Done;
} ISO_TRANSFER_OBJECT, *PISO_TRANSFER_OBJECT;

typedef struct _ISO_STREAM_OBJECT
{
   PDEVICE_OBJECT DeviceObject;
   ULONG PacketSize;
   ULONG NumPackets;
   PUSBD_PIPE_INFORMATION PipeInfo;
   PVOID TransferBuffer;
   ULONG TransferBufferLength;
   PVOID IsoDescriptorBuffer;
   ULONG FramesPerBuffer;
   ULONG BufferCount;
   ULONG PendingTransfers;
   PRING_BUFFER DataRingBuffer;
   PRING_BUFFER DescriptorRingBuffer;
   PISO_TRANSFER_OBJECT TransferObject;
} ISO_STREAM_OBJECT, *PISO_STREAM_OBJECT;

// Device extension structure
typedef struct tagDEVICE_EXTENSION
{
   PDEVICE_OBJECT PhysicalDeviceObject;   // physical device object   
   PDEVICE_OBJECT LowerDeviceObject;		// next lower driver in same stack
   BOOLEAN Stop;     // Indicates that we have recieved a STOP message

   // configuration handle for the configuration the
   // device is currently in
   USBD_CONFIGURATION_HANDLE ConfigurationHandle;

   // pointer to the USB device descriptor for this device
   PUSB_DEVICE_DESCRIPTOR DeviceDescriptor;

   // we support up to one interface
   PUSBD_INTERFACE_INFORMATION Interface;

   // the number of device handles currently open to the device object.
   // Gets incremented by Create and decremented by Close
   //打開的設(shè)備句柄。與用戶應(yīng)用程序相對(duì)應(yīng)的。即createfile和closehandle。
   ULONG OpenHandles;

   // Name buffer for our named Functional device object link
   //設(shè)備連接名,注意它的長度為64。不要太小了,如32,不好。
   WCHAR DeviceLinkName[64];

   // use counter for the device.  Gets incremented when the driver receives
   // a request and gets decremented when a request s completed.
   //記錄有多少個(gè)I/O請(qǐng)求正在處理中。
   LONG Usages;

   // this event gets set when it is ok to remove the device
   KEVENT evRemove;

   // TRUE if we're trying to remove this device
   BOOLEAN Removing;
   
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

NTSTATUS TestAddDevice(IN PDRIVER_OBJECT DriverObject,
                       IN PDEVICE_OBJECT PhysicalDeviceObject);
VOID TestDrvUnload(IN PDRIVER_OBJECT DriverObject);
NTSTATUS TestPnpIrp(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
NTSTATUS TestPowerIrp(IN PDEVICE_OBJECT fdo,IN PIRP Irp);
NTSTATUS TestCreate(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
NTSTATUS TestClose(IN PDEVICE_OBJECT fdo, IN PIRP Irp);
NTSTATUS TestIOCTL(IN PDEVICE_OBJECT fdo,IN PIRP Irp);
BOOLEAN LockDevice(IN PDEVICE_OBJECT fdo);
void UnlockDevice(PDEVICE_OBJECT fdo);
NTSTATUS CompleteRequest(IN PIRP Irp,IN NTSTATUS status,IN ULONG info);
NTSTATUS UsbCallUSBDI(IN PDEVICE_OBJECT fdo,IN PURB Urb);
NTSTATUS UsbResetPipe(IN PDEVICE_OBJECT DeviceObject,IN ULONG PipeNum);

#endif      //DRIVER section


#define Ezusb_IOCTL_INDEX  0x0800

//FILE_DEVICE_UNKNOWN在adddevice時(shí)標(biāo)志的。

#define IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+0,\
                                                   METHOD_BUFFERED,  \
                                                   FILE_ANY_ACCESS)

#define IOCTL_Ezusb_GET_CONFIGURATION_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+1,\
                                                   METHOD_BUFFERED,  \
                                                   FILE_ANY_ACCESS)

#define IOCTL_Ezusb_GET_STRING_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+2,\
                                                   METHOD_BUFFERED,  \
                                                   FILE_ANY_ACCESS)

#define IOCTL_EZUSB_ISO_WRITE             CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+3,\
                                                   METHOD_IN_DIRECT,  \
                                                   FILE_ANY_ACCESS)

#define IOCTL_EZUSB_ISO_READ              CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+4,\
                                                   METHOD_OUT_DIRECT,  \
                                                   FILE_ANY_ACCESS)

#define IOCTL_EZUSB_GET_CURRENT_FRAME_NUMBER  CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+5,\
                                                   METHOD_BUFFERED,  \
                                                   FILE_ANY_ACCESS)

#define IOCTL_Ezusb_RESETPIPE             CTL_CODE(FILE_DEVICE_UNKNOWN,  \
                                                   Ezusb_IOCTL_INDEX+6,\
                                                   METHOD_IN_DIRECT,  \
                                                   FILE_ANY_ACCESS)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久久久vr| 亚洲人成影院在线观看| 青青草97国产精品免费观看无弹窗版| 欧美私人免费视频| 亚洲福利一二三区| 欧美夫妻性生活| 精品一区二区免费在线观看| 久久精品一区四区| 成人h动漫精品一区二区| 亚洲欧洲av在线| 欧美在线综合视频| 免费日本视频一区| 久久久久国产精品麻豆ai换脸| 国产一区二区三区最好精华液| 亚洲国产精品黑人久久久| 99久久99久久精品国产片果冻| 亚洲综合在线免费观看| 91麻豆精品久久久久蜜臀| 国内久久婷婷综合| 亚洲精品高清在线| 日韩欧美一区二区视频| 国产成人精品影视| 亚洲超丰满肉感bbw| 精品乱人伦一区二区三区| jlzzjlzz亚洲女人18| 日韩国产欧美在线观看| 久久久电影一区二区三区| 欧美亚洲高清一区| 精品影视av免费| 亚洲精品综合在线| www国产成人免费观看视频 深夜成人网| k8久久久一区二区三区| 三级欧美韩日大片在线看| 欧美激情在线看| 欧美日韩三级一区| 高清在线成人网| 日本一区中文字幕| 1000精品久久久久久久久| 日韩欧美国产系列| 91一区二区在线| 激情深爱一区二区| 午夜精品一区二区三区电影天堂 | 国产福利一区二区三区视频| 1000部国产精品成人观看| 日韩欧美一区在线观看| 97精品国产露脸对白| 国产在线精品一区二区不卡了| 一区二区三区在线观看视频| 久久在线观看免费| 欧美酷刑日本凌虐凌虐| 91麻豆免费视频| 国产传媒日韩欧美成人| 免费观看在线色综合| 亚洲一区在线电影| 自拍偷拍欧美精品| 国产三级三级三级精品8ⅰ区| 制服丝袜亚洲网站| 欧美日韩高清一区二区三区| 9人人澡人人爽人人精品| 国产精品一卡二卡在线观看| 欧美aa在线视频| 午夜精品一区二区三区三上悠亚| 最新国产の精品合集bt伙计| 国产嫩草影院久久久久| 久久久久久综合| 精品捆绑美女sm三区| 欧美一区二区三区四区高清| 91国内精品野花午夜精品| 99热精品国产| va亚洲va日韩不卡在线观看| 成人美女在线视频| 国产福利91精品一区| 国产一区 二区 三区一级| 美国十次综合导航| 亚洲免费观看高清完整版在线| 欧美吞精做爰啪啪高潮| 久久久久久久久免费| 色狠狠综合天天综合综合| 丁香婷婷深情五月亚洲| 国产精品99久久久久久久vr| 国产成人av一区二区| 国产成人啪午夜精品网站男同| 国产精品亚洲一区二区三区妖精| 男女性色大片免费观看一区二区 | 成人欧美一区二区三区1314| 欧美激情中文字幕| 日韩毛片高清在线播放| 自拍av一区二区三区| 亚洲久本草在线中文字幕| 亚洲综合丝袜美腿| 日韩电影在线观看网站| 国产一区二区在线免费观看| 懂色一区二区三区免费观看| www.一区二区| 欧美性高清videossexo| 欧美精品xxxxbbbb| 日韩欧美不卡一区| 国产精品无人区| 亚洲一区自拍偷拍| 激情文学综合丁香| 99国内精品久久| 91精品国产色综合久久不卡电影| 欧美一级生活片| 国产亚洲精品超碰| 亚洲精品免费一二三区| 久久精品国产秦先生| 国产.欧美.日韩| 欧美日韩国产123区| 久久人人爽爽爽人久久久| 亚洲欧美日韩久久精品| 青娱乐精品在线视频| 国产suv精品一区二区三区| 色哟哟国产精品免费观看| 欧美一区二区高清| 1000精品久久久久久久久| 蜜臀av一区二区三区| 99视频精品在线| 日韩午夜在线观看视频| 成人欧美一区二区三区1314| 美女一区二区三区在线观看| av激情综合网| 日韩欧美一二三四区| 一区二区中文视频| 免费成人av在线播放| 91麻豆免费观看| 国产婷婷色一区二区三区在线| 亚洲一二三四久久| 丁香五精品蜜臀久久久久99网站 | 国产高清精品在线| 欧美日韩久久一区二区| 亚洲国产精品传媒在线观看| 奇米精品一区二区三区在线观看一 | 日韩免费看的电影| 樱桃视频在线观看一区| 国产乱码精品1区2区3区| 欧美视频在线观看一区| 亚洲欧美综合网| 国内精品国产成人| 欧美一区二区三区啪啪| 亚洲一区二区三区激情| 成人精品国产免费网站| 亚洲精品在线电影| 亚洲v中文字幕| 91浏览器打开| 国产精品丝袜一区| 国产精品资源在线观看| 欧美一区二区三区视频在线观看| 一区二区三区四区乱视频| 成人免费毛片嘿嘿连载视频| 26uuu精品一区二区| 美洲天堂一区二卡三卡四卡视频| 色琪琪一区二区三区亚洲区| 国产精品色婷婷久久58| 粉嫩av亚洲一区二区图片| 欧美精品一区二| 精品一区二区三区在线播放视频 | 国产女人18水真多18精品一级做| 日本aⅴ亚洲精品中文乱码| 欧美日韩一区二区三区四区五区| 亚洲色图制服丝袜| 9色porny自拍视频一区二区| 国产精品久久久久9999吃药| 国产成人在线电影| 国产色综合一区| 成人av先锋影音| 欧美国产精品久久| 成人av影视在线观看| 中文字幕一区二区三区不卡在线 | 精品国产a毛片| 精品一区二区三区不卡| 久久影院电视剧免费观看| 狠狠色丁香久久婷婷综合_中| 日韩三级中文字幕| 久久99精品国产91久久来源| 久久综合丝袜日本网| 国产精品资源在线| 国产精品毛片大码女人| 91一区二区三区在线播放| 亚洲最新在线观看| 欧美一区二区三区视频在线| 久久福利资源站| 国产精品久久久久永久免费观看 | 欧美日韩第一区日日骚| 天堂久久一区二区三区| 欧美一区二区三区视频免费| 精品无人码麻豆乱码1区2区| 国产亚洲欧美激情| 91在线国产福利| 五月天网站亚洲| 日韩欧美国产电影| 成人av免费在线观看| 亚洲一区二区视频| 91精品国产综合久久久蜜臀粉嫩| 另类小说图片综合网| 久久久天堂av| 在线视频一区二区三区| 美美哒免费高清在线观看视频一区二区 | 亚洲精品一区二区三区影院 | 国产精品18久久久久久久久久久久 | 丁香六月综合激情|