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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? usbdlib.h

?? s3c44b0試驗(yàn)程序
?? H
字號(hào):
/*++

Copyright (c) 1996	Microsoft Corporation

Module Name:

	USBDLIB.H

Abstract:

   Services exported by USBD.

Environment:

    Kernel & user mode

Revision History:

    06-10-96 : created

--*/

#ifndef   __USBDLIB_H__
#define   __USBDLIB_H__

typedef struct _USBD_INTERFACE_LIST_ENTRY {
    PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
    PUSBD_INTERFACE_INFORMATION Interface;
} USBD_INTERFACE_LIST_ENTRY, *PUSBD_INTERFACE_LIST_ENTRY;


//
// Macros for building URB requests
//

#define UsbBuildInterruptOrBulkTransferRequest(urb, \
                                               length, \
                                               pipeHandle, \
                                               transferBuffer, \
                                               transferBufferMDL, \
                                               transferBufferLength, \
                                               transferFlags, \
                                               link) { \
            (urb)->UrbHeader.Function = URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER; \
            (urb)->UrbHeader.Length = (length); \
            (urb)->UrbBulkOrInterruptTransfer.PipeHandle = (pipeHandle); \
            (urb)->UrbBulkOrInterruptTransfer.TransferBufferLength = (transferBufferLength); \
            (urb)->UrbBulkOrInterruptTransfer.TransferBufferMDL = (transferBufferMDL); \
            (urb)->UrbBulkOrInterruptTransfer.TransferBuffer = (transferBuffer); \
            (urb)->UrbBulkOrInterruptTransfer.TransferFlags = (transferFlags); \
            (urb)->UrbBulkOrInterruptTransfer.UrbLink = (link); }
            

#define UsbBuildGetDescriptorRequest(urb, \
                                     length, \
                                     descriptorType, \
                                     descriptorIndex, \
                                     languageId, \
                                     transferBuffer, \
                                     transferBufferMDL, \
                                     transferBufferLength, \
                                     link) { \
            (urb)->UrbHeader.Function =  URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE; \
            (urb)->UrbHeader.Length = (length); \
            (urb)->UrbControlDescriptorRequest.TransferBufferLength = (transferBufferLength); \
            (urb)->UrbControlDescriptorRequest.TransferBufferMDL = (transferBufferMDL); \
            (urb)->UrbControlDescriptorRequest.TransferBuffer = (transferBuffer); \
            (urb)->UrbControlDescriptorRequest.DescriptorType = (descriptorType); \
            (urb)->UrbControlDescriptorRequest.Index = (descriptorIndex); \
            (urb)->UrbControlDescriptorRequest.LanguageId = (languageId); \
            (urb)->UrbControlDescriptorRequest.UrbLink = (link); }



#define UsbBuildGetStatusRequest(urb, \
                                 op, \
                                 index, \
                                 transferBuffer, \
                                 transferBufferMDL, \
                                 link) { \
            (urb)->UrbHeader.Function =  (op); \
            (urb)->UrbHeader.Length = sizeof(struct _URB_CONTROL_GET_STATUS_REQUEST); \
            (urb)->UrbControlGetStatusRequest.TransferBufferLength = sizeof(USHORT); \
            (urb)->UrbControlGetStatusRequest.TransferBufferMDL = (transferBufferMDL); \
            (urb)->UrbControlGetStatusRequest.TransferBuffer = (transferBuffer); \
            (urb)->UrbControlGetStatusRequest.Index = (index); \
            (urb)->UrbControlGetStatusRequest.UrbLink = (link); }


#define UsbBuildFeatureRequest(urb, \
                               op, \
                               featureSelector, \
                               index, \
                               link) { \
            (urb)->UrbHeader.Function =  (op); \
            (urb)->UrbHeader.Length = sizeof(struct _URB_CONTROL_FEATURE_REQUEST); \
            (urb)->UrbControlFeatureRequest.FeatureSelector = (featureSelector); \
            (urb)->UrbControlFeatureRequest.Index = (index); \
            (urb)->UrbControlGetStatusRequest.UrbLink = (link); }


                
#define UsbBuildSelectConfigurationRequest(urb, \
                                         length, \
                                         configurationDescriptor) { \
            (urb)->UrbHeader.Function =  URB_FUNCTION_SELECT_CONFIGURATION; \
            (urb)->UrbHeader.Length = (length); \
            (urb)->UrbSelectConfiguration.ConfigurationDescriptor = (configurationDescriptor);    }
                
#define UsbBuildSelectInterfaceRequest(urb, \
                                      length, \
                                      configurationHandle, \
                                      interfaceNumber, \
                                      alternateSetting) { \
            (urb)->UrbHeader.Function =  URB_FUNCTION_SELECT_INTERFACE; \
            (urb)->UrbHeader.Length = (length); \
            (urb)->UrbSelectInterface.Interface.AlternateSetting = (alternateSetting); \
            (urb)->UrbSelectInterface.Interface.InterfaceNumber = (interfaceNumber); \
            (urb)->UrbSelectInterface.ConfigurationHandle = (configurationHandle);    }


#define UsbBuildVendorRequest(urb, \
                              cmd, \
                              length, \
                              transferFlags, \
                              reservedbits, \
                              request, \
                              value, \
                              index, \
                              transferBuffer, \
                              transferBufferMDL, \
                              transferBufferLength, \
                              link) { \
            (urb)->UrbHeader.Function =  cmd; \
            (urb)->UrbHeader.Length = (length); \
            (urb)->UrbControlVendorClassRequest.TransferBufferLength = (transferBufferLength); \
            (urb)->UrbControlVendorClassRequest.TransferBufferMDL = (transferBufferMDL); \
            (urb)->UrbControlVendorClassRequest.TransferBuffer = (transferBuffer); \
            (urb)->UrbControlVendorClassRequest.RequestTypeReservedBits = (reservedbits); \
            (urb)->UrbControlVendorClassRequest.Request = (request); \
            (urb)->UrbControlVendorClassRequest.Value = (value); \
            (urb)->UrbControlVendorClassRequest.Index = (index); \
            (urb)->UrbControlVendorClassRequest.TransferFlags = (transferFlags); \
            (urb)->UrbControlVendorClassRequest.UrbLink = (link); }

//
// Get the USB status code
//

#define URB_STATUS(urb) ((urb)->UrbHeader.Status)
                
//
// Macros used for select interface and select configuration requests
//

//
// Calculates the size needed for a SELECT_CONFIGURATION URB request given
// the number of interfaces and the total number of pipes in all interfaces
// selected.
//

#ifdef OSR21_COMPAT
#define GET_SELECT_CONFIGURATION_REQUEST_SIZE(totalInterfaces, totalPipes) \
            (sizeof(struct _URB_SELECT_CONFIGURATION) + \
                ((totalInterfaces-1) * sizeof(USBD_INTERFACE_INFORMATION)) + \
                ((totalPipes)*sizeof(USBD_PIPE_INFORMATION)))
#else
#define GET_SELECT_CONFIGURATION_REQUEST_SIZE(totalInterfaces, totalPipes) \
            (sizeof(struct _URB_SELECT_CONFIGURATION) + \
                ((totalInterfaces-1) * sizeof(USBD_INTERFACE_INFORMATION)) + \
                ((totalPipes-1)*sizeof(USBD_PIPE_INFORMATION)))
#endif

//
// Calculates the size needed for a SELECT_INTERFACE URB request given
// the number of pipes in the alternate interface selected.
//

#ifdef OSR21_COMPAT
#define GET_SELECT_INTERFACE_REQUEST_SIZE(totalPipes) \
            (sizeof(struct _URB_SELECT_INTERFACE) + \
             ((totalPipes)*sizeof(USBD_PIPE_INFORMATION)))
#else 
#define GET_SELECT_INTERFACE_REQUEST_SIZE(totalPipes) \
            (sizeof(struct _URB_SELECT_INTERFACE) + \
             ((totalPipes-1)*sizeof(USBD_PIPE_INFORMATION)))
#endif
//
// Calculates the size of the interface information structure needed to describe
// a give interface based on the number of endpoints.
//

#ifdef OSR21_COMPAT
#define GET_USBD_INTERFACE_SIZE(numEndpoints) (sizeof(USBD_INTERFACE_INFORMATION) + \
                        sizeof(USBD_PIPE_INFORMATION)*(numEndpoints))
#else
#define GET_USBD_INTERFACE_SIZE(numEndpoints) (sizeof(USBD_INTERFACE_INFORMATION) + \
                        (sizeof(USBD_PIPE_INFORMATION)*(numEndpoints)) \
                         - sizeof(USBD_PIPE_INFORMATION))
#endif

//
// Calculates the size of an iso urb request given the number of packets
//

#define  GET_ISO_URB_SIZE(n) (sizeof(struct _URB_ISOCH_TRANSFER)+\
        sizeof(USBD_ISO_PACKET_DESCRIPTOR)*n)                          


#ifndef _USBD_

DECLSPEC_IMPORT
VOID 
USBD_Debug_LogEntry(
	IN CHAR *Name, 
	IN ULONG Info1, 
	IN ULONG Info2, 
	IN ULONG Info3
	);


DECLSPEC_IMPORT
VOID
USBD_GetUSBDIVersion(
    PUSBD_VERSION_INFORMATION VersionInformation
    );


DECLSPEC_IMPORT
PUSB_INTERFACE_DESCRIPTOR
USBD_ParseConfigurationDescriptor(
    IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, 
    IN UCHAR InterfaceNumber, 
    IN UCHAR AlternateSetting
    );    
/*++

Routine Description:

    This function is replaced by USBD_ParseConfigurationDescriptorEx

Arguments:

Return Value:


--*/        


DECLSPEC_IMPORT
PURB
USBD_CreateConfigurationRequest(
    IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
    IN OUT PUSHORT Siz
    );    
/*++

Routine Description:

    This function is replaced by USBD_CreateConfigurationRequestEx    

Arguments:


Return Value:


--*/       


//
// These APIS replace USBD_CreateConfigurationRequest,
//                    USBD_ParseConfigurationDescriptor  
//
    
DECLSPEC_IMPORT
PUSB_COMMON_DESCRIPTOR
USBD_ParseDescriptors(
    IN PVOID DescriptorBuffer,
    IN ULONG TotalLength,
    IN PVOID StartPosition,
    IN LONG DescriptorType
    );
/*++

Routine Description:

    Parses a group of standard USB configuration descriptors (returned from a device) for
    a specific descriptor type.

Arguments:

    DescriptorBuffer - pointer to a block of contiguous USB desscriptors
    TotalLength - size in bytes of the Descriptor buffer
    StartPosition - starting position in the buffer to begin parsing,
                    this must point to the begining of a USB descriptor.
    DescriptorType - USB descritor type to locate.                            
    

Return Value:

    pointer to a usb descriptor with a DescriptorType field matching the 
            input parameter or NULL if not found.

--*/    


DECLSPEC_IMPORT
PUSB_INTERFACE_DESCRIPTOR
USBD_ParseConfigurationDescriptorEx(
    IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
    IN PVOID StartPosition,
    IN LONG InterfaceNumber,
    IN LONG AlternateSetting,
    IN LONG InterfaceClass,
    IN LONG InterfaceSubClass,
    IN LONG InterfaceProtocol
    );
/*++

Routine Description:

    Parses a standard USB configuration descriptor (returned from a device) for
    a specific interface, alternate setting class subclass or protocol codes

Arguments:

    ConfigurationDescriptor - pointer to USB configuration descriptor, returned
                            from a device (includes all interface and endpoint 
                            descriptors).
    StartPosition - pointer to starting position within the configuration 
                    descrptor to begin parsing -- this must be a valid usb 
                    descriptor.
    InterfaceNumber - interface number to find, (-1) match any
    AlternateSetting - alt setting number to find, (-1) match any
    InterfaceClass - class to find, (-1) match any
    InterfaceSubClass - subclass to find, (-1) match any
    InterfaceProtocol - protocol to find, (-1) match any
    
Return Value:

    returns a pointer to the first interface descriptor matching the parameters 
    passed in (starting from startposition) or NULL if no match is found.

--*/

DECLSPEC_IMPORT
PURB
USBD_CreateConfigurationRequestEx(
    IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
    IN PUSBD_INTERFACE_LIST_ENTRY InterfaceList
    );
/*++

Routine Description:

    Allocates and initilaizes a urb of sufficient size to configure a device
    based on the list of interfaces passed in.

    The interface list is a contiguous array of USBD_INTERFACE_LIST_ENTRIES
    each pointing to a specific interface descriptor to be incorporated in
    the request, the list is terminated by a list entry with an 
    InterfaceDescriptor pointer of NULL.  

    On return the interface field of each list entry is filled in with a pointer
    to the USBD_INTERFACE_INFORMATION structure within the URB corrisponding to 
    the same interface descriptor.

Arguments:

    ConfigurationDescriptor - pointer to USB configuration descriptor, returned
                            from a device (includes all interface and endpoint 
                            descriptors).

    InterfaceList - list of interfaces we are interested in.

Return Value:

    Pointer to initailized select_configuration urb.

--*/

__declspec(dllexport)
ULONG
USBD_GetInterfaceLength(
    IN PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor, 
    IN PUCHAR BufferEnd
    );
/*++

Routine Description:

    Returns the length (in bytes) of a given interface descriptor 
    including all endpoint and class descriptors
    

Arguments:

    InterfaceDescriptor    

    BufferEnd - Pointer to the end of the buffer containing the descriptors
    
Return Value:

    length of descriptors

--*/


__declspec(dllexport)
VOID
USBD_RegisterHcFilter(
    PDEVICE_OBJECT DeviceObject, 
    PDEVICE_OBJECT FilterDeviceObject
    );

/*++

Routine Description:

    Called by an HC filter driver after it attaches to the top
    of the host controller driver stack.

Arguments:

    DeviceObject - current top of stack

    FilterDeviceObject - device object for the filter driver
    
Return Value:

    none

--*/

__declspec(dllexport)
NTSTATUS 
USBD_GetPdoRegistryParameter(
    IN PDEVICE_OBJECT PhysicalDeviceObject,
    IN OUT PVOID Parameter,
    IN ULONG ParameterLength,
    IN PWCHAR KeyName,
    IN ULONG KeyNameLength
    );
/*++

Routine Description:
    
Arguments:

Return Value:

--*/
    

#endif /* _USBD_ */

#endif /* __USBDLIB_H__ */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频免费观看高清完整版 | 日本在线不卡视频一二三区| 日韩亚洲欧美在线| 午夜精品123| 欧美日韩精品一区二区三区蜜桃| 亚洲色图一区二区| 91论坛在线播放| 亚洲精品亚洲人成人网在线播放| 91视频精品在这里| 亚洲日本欧美天堂| 色婷婷av一区二区三区之一色屋| 日韩毛片精品高清免费| 91一区二区在线| 一区二区三区日韩在线观看| 欧洲精品在线观看| 亚洲精品国产一区二区三区四区在线| 97久久精品人人做人人爽 | 久久久美女毛片| 国产精品综合网| 国产日韩欧美一区二区三区乱码 | 日韩一区二区免费电影| 免费高清成人在线| 久久嫩草精品久久久久| 成人一级片在线观看| 亚洲欧洲99久久| 欧美天堂亚洲电影院在线播放| 亚洲成人动漫av| 日韩一区二区三区电影在线观看| 经典三级一区二区| 中文字幕av一区二区三区免费看| 91啪亚洲精品| 天天色综合成人网| 精品国产精品网麻豆系列| 国产成人精品免费看| 亚洲色图欧美在线| 欧美日韩国产天堂| 精品综合免费视频观看| 中文字幕第一区综合| 在线免费观看成人短视频| 亚洲动漫第一页| 欧美一区二区福利视频| 国产成人免费视频一区| 一区二区三区中文在线| 日韩一级高清毛片| 成人美女在线视频| 亚洲一二三区在线观看| 日韩一级大片在线观看| 成人av网站免费| 亚洲成年人网站在线观看| 26uuu欧美| 色av成人天堂桃色av| 久久国内精品自在自线400部| 国产精品久久久久久久久免费樱桃 | 国产精品一区二区三区乱码| 亚洲视频在线一区二区| 欧美一区二区三区小说| 丁香婷婷深情五月亚洲| 亚洲一二三区视频在线观看| 久久久久久久免费视频了| 91啪在线观看| 国产在线一区二区综合免费视频| 亚洲麻豆国产自偷在线| 日韩精品一区二区三区视频在线观看| 成人aaaa免费全部观看| 日韩国产精品久久久| 国产精品高潮呻吟久久| 欧美一卡在线观看| 91影视在线播放| 狠狠狠色丁香婷婷综合激情| 亚洲日本韩国一区| 亚洲精品一线二线三线| 91福利社在线观看| 国产精品一品视频| 肉丝袜脚交视频一区二区| 欧美国产综合色视频| 欧美一区二区三区在线电影| 99久久99久久精品免费看蜜桃| 免费黄网站欧美| 亚洲蜜桃精久久久久久久| 久久众筹精品私拍模特| 欧美男男青年gay1069videost | 国产一区二区剧情av在线| 亚洲一区二区三区在线播放| 久久精品一区蜜桃臀影院| 欧美乱熟臀69xxxxxx| av在线免费不卡| 韩国一区二区三区| 午夜成人免费电影| 日韩毛片一二三区| 国产欧美精品一区二区色综合| 欧美一二三四区在线| 在线日韩一区二区| 99久久er热在这里只有精品15| 狠狠狠色丁香婷婷综合久久五月| 亚洲国产精品久久不卡毛片 | 久久精品国产999大香线蕉| 亚洲一区二区三区影院| 亚洲欧洲国产日本综合| 久久久www成人免费无遮挡大片| 欧美久久久久久久久| 色婷婷香蕉在线一区二区| 成人福利在线看| 国产精品一区二区三区乱码| 蜜桃视频第一区免费观看| 亚洲成人激情av| 亚洲综合自拍偷拍| 亚洲日本电影在线| 国产精品久久久久aaaa樱花| 日本网站在线观看一区二区三区| 国产精品久久久久久福利一牛影视| 日韩无一区二区| 久久女同精品一区二区| 欧美日韩色一区| 色综合久久综合网欧美综合网| 成人免费福利片| 高潮精品一区videoshd| 国产一区999| 日韩综合小视频| 亚洲电影一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 国产日韩一级二级三级| 精品国产成人在线影院 | 久久久三级国产网站| 国产亲近乱来精品视频| 中文成人av在线| 一区二区三区在线高清| 成人av网在线| 色婷婷综合激情| 91.麻豆视频| 精品国产凹凸成av人导航| 久久久影视传媒| 亚洲日韩欧美一区二区在线| 亚洲自拍偷拍九九九| 日产国产欧美视频一区精品| 精品写真视频在线观看| 成人a区在线观看| 欧美日韩在线观看一区二区| 欧美一区中文字幕| 2021中文字幕一区亚洲| 亚洲视频在线一区二区| 午夜精品久久久久久久99水蜜桃 | 久久国产乱子精品免费女| 国产精品一线二线三线精华| 成人的网站免费观看| 欧洲精品在线观看| 日韩欧美中文字幕公布| 国产视频在线观看一区二区三区 | 亚洲国产日产av| 久久国产三级精品| 91在线国产福利| 欧美一级精品大片| 国产亚洲欧美日韩俺去了| 一区二区三区四区av| 免费成人性网站| 91亚洲永久精品| 91精品啪在线观看国产60岁| 国产亚洲女人久久久久毛片| 亚洲精品视频在线观看免费| 奇米色一区二区| 成人美女视频在线看| 欧美精品亚洲二区| 国产午夜久久久久| 亚洲国产日韩a在线播放| 国产精品夜夜爽| 欧美亚洲日本国产| 久久久久久久久久久久久夜| 一区二区三区免费| 韩国欧美国产一区| 色妞www精品视频| 精品福利二区三区| 一区二区在线免费观看| 国产麻豆精品在线| 精品视频色一区| 亚洲国产精品99久久久久久久久| 亚洲国产视频一区二区| 国产91精品久久久久久久网曝门| 欧美精品乱码久久久久久按摩 | 国产一区二区视频在线| 日本国产一区二区| 国产亚洲欧美激情| 日本vs亚洲vs韩国一区三区| 99视频一区二区| 2024国产精品视频| 三级精品在线观看| 一本色道久久综合精品竹菊| 欧美精品一区二区高清在线观看| 亚洲一区二区三区四区在线免费观看| 国产精品自拍毛片| 欧美一级xxx| 亚洲一区视频在线观看视频| 成人国产免费视频| 2欧美一区二区三区在线观看视频| 亚洲国产一区视频| 91网站在线观看视频| 欧美国产日韩精品免费观看| 久久精品久久精品| 91麻豆精品国产91久久久久久| 亚洲情趣在线观看| 成人午夜精品一区二区三区| 日韩女同互慰一区二区|