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

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

?? usbdlib.h

?? s3c44b0的開發程序
?? H
字號:
/*++

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__ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷成人综合网| 日本韩国欧美国产| 97精品久久久午夜一区二区三区| 久久精品一区二区三区四区| 国模少妇一区二区三区| 2023国产一二三区日本精品2022| 国产成人在线色| 26uuu亚洲综合色欧美| 婷婷激情综合网| 精品精品国产高清a毛片牛牛 | 91精品欧美综合在线观看最新| 国产丝袜欧美中文另类| 日韩不卡一区二区三区| 91麻豆6部合集magnet| 欧美tickling挠脚心丨vk| 日韩黄色一级片| 91麻豆国产精品久久| 国产欧美一区二区精品久导航| 亚洲成人av电影| 91福利资源站| 一区二区三区小说| 成人高清视频在线观看| 中文字幕av一区二区三区免费看| 久久精品国产99国产| 欧美人妖巨大在线| 天堂在线一区二区| 欧美视频在线播放| 亚洲国产精品精华液网站| 一本色道亚洲精品aⅴ| 综合久久一区二区三区| 99国产精品国产精品毛片| 国产精品久久久久久亚洲伦| 亚洲乱码国产乱码精品精小说 | 久久久久久久久久久黄色| 国产一区二区三区四| 久久97超碰国产精品超碰| 国产精品乱码久久久久久| 国产91富婆露脸刺激对白| 本田岬高潮一区二区三区| 久久久高清一区二区三区| 国产精品一区在线| 久久美女艺术照精彩视频福利播放 | 一区在线播放视频| 成人在线视频一区| 国产精品久久久久久久久久免费看| 91在线观看地址| 日本一区二区久久| 成人av网站免费| 中文字幕中文乱码欧美一区二区| 风间由美一区二区av101| 国产精品久久久久久久久晋中| 成人午夜av电影| 日韩美女久久久| 黄色资源网久久资源365| 精品一区二区三区久久久| 日韩精品一区二区三区四区| 精品制服美女丁香| 国产午夜精品福利| 色婷婷亚洲综合| 亚洲自拍另类综合| 欧美一区二区三区电影| 精品一区二区三区在线观看国产 | 福利一区在线观看| 精品少妇一区二区三区在线播放| 亚洲色图都市小说| 国产成人免费视频一区| 国产精品理论在线观看| 欧美性受xxxx黑人xyx性爽| 日韩高清不卡在线| 国产精品视频线看| 5月丁香婷婷综合| 国产成人高清视频| 日韩国产精品久久| 国产精品人妖ts系列视频| 久久综合色鬼综合色| 亚洲与欧洲av电影| av中文字幕不卡| 亚洲精品在线观看网站| 亚洲成人免费在线| 欧美亚洲一区三区| 亚洲妇女屁股眼交7| 国产传媒久久文化传媒| 日韩午夜在线播放| 日韩一区精品视频| 久久精品视频一区二区三区| 欧美精品久久一区| 精品va天堂亚洲国产| 91小视频免费观看| 美女视频黄频大全不卡视频在线播放| 国产精品女同互慰在线看| 日韩欧美美女一区二区三区| 成人自拍视频在线观看| 老司机免费视频一区二区三区| 欧美性欧美巨大黑白大战| 国产乱一区二区| 丝袜美腿高跟呻吟高潮一区| 狠狠久久亚洲欧美| 国产精品卡一卡二卡三| 91精彩视频在线观看| 亚洲天堂精品在线观看| 欧美一区二区在线播放| 欧美亚洲免费在线一区| 久久免费国产精品| 色综合视频一区二区三区高清| 亚洲福利视频一区| 国产精品久久久久久久久免费丝袜 | 亚洲永久免费av| a级精品国产片在线观看| 精品免费国产一区二区三区四区| 午夜伊人狠狠久久| 精品国产91九色蝌蚪| 高清在线不卡av| 午夜精品福利视频网站| 亚洲国产欧美一区二区三区丁香婷| 蜜臀久久99精品久久久画质超高清| 国产乱淫av一区二区三区| 美腿丝袜亚洲色图| 日韩中文字幕亚洲一区二区va在线 | 国产精品久久久久影院老司| 亚洲国产视频a| 色综合久久中文综合久久牛| 18成人在线观看| 国产精品久久久久久妇女6080| 国产亲近乱来精品视频| 国产精品视频免费看| ●精品国产综合乱码久久久久| 亚洲色图在线看| 一区二区三区.www| 五月天一区二区| 久久国产精品无码网站| 国产伦精品一区二区三区视频青涩 | 欧美电影一区二区| 欧美二区乱c少妇| 日韩亚洲欧美在线| 精品国产免费人成电影在线观看四季 | 欧美日本在线观看| 91精品国产欧美一区二区| 久久久久九九视频| 成人精品一区二区三区中文字幕| 五月激情六月综合| 韩国一区二区三区| 成人夜色视频网站在线观看| 日本国产一区二区| 日韩欧美国产三级电影视频| 2023国产一二三区日本精品2022| 国产精品另类一区| 日韩av高清在线观看| 精品写真视频在线观看| 波多野结衣欧美| 欧美亚洲图片小说| 亚洲精品在线免费播放| 自拍偷拍亚洲欧美日韩| 蜜乳av一区二区三区| 成人免费毛片片v| 欧美视频日韩视频在线观看| 91精品国产综合久久香蕉的特点 | 日韩黄色一级片| 国产一区二区三区最好精华液| 91麻豆123| 精品国精品自拍自在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲.国产.中文慕字在线| 国产精品一二三| 日韩一区二区中文字幕| 亚洲精品福利视频网站| 精品一区二区三区影院在线午夜| 色综合久久综合网欧美综合网| 日韩欧美第一区| 亚洲午夜在线电影| 成人蜜臀av电影| 久久亚洲精品国产精品紫薇| 午夜精品影院在线观看| thepron国产精品| 欧美mv日韩mv国产网站app| 亚洲第一二三四区| 91免费国产在线| 精品不卡在线视频| 免费在线观看成人| 在线免费观看日韩欧美| 久久精品免视看| 国产一区二区三区在线观看免费视频| 日韩欧美在线网站| 亚洲免费电影在线| 国产成人在线色| 精品电影一区二区| 五月天精品一区二区三区| 日本精品一区二区三区四区的功能| 精品电影一区二区三区 | 欧美精品一级二级| 亚洲欧美日韩国产综合| av色综合久久天堂av综合| 2020国产精品自拍| 狂野欧美性猛交blacked| 欧美福利一区二区| 亚洲主播在线播放| 欧洲激情一区二区| 一区二区三区在线看| 91福利视频久久久久| 伊人婷婷欧美激情| 91久久人澡人人添人人爽欧美 |