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

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

?? usbtransunitinit.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 4 頁
字號:
    }/***************************************************************************** usbdClientUnregister - Unregisters a USBD client** A client invokes this function to release a previously assigned* USBD_CLIENT_HANDLE.  The USBD will release all resources allocated to* the client, aborting any outstanding URBs which may exist for the client.** Once this function has been called with a given clientHandle, the client* must not attempt to reuse the indicated <clientHandle>.** RETURNS: OK, or ERROR if unable to unregister client.** ERRNO: N/A*/STATUS usbdClientUnregister    (    USBD_CLIENT_HANDLE clientHandle	/* Client handle */    )    {    USBHST_STATUS status = USBHST_SUCCESS;    pUSBTU_DEVICE_DRIVER pDriver = (pUSBTU_DEVICE_DRIVER) clientHandle;    STATUS s = OK;    USBTU_LOG ( "usbdClientUnRegister entered \n");    /* Wind View Instrumentation */    if ((usbtuInitWvFilter & USBTU_WV_FILTER) == TRUE)        {        char evLog[USBTU_WV_LOGSIZE];        strncpy ((char*)evLog, (char *)(pDriver->clientName),USBD_NAME_LEN );        strcat(evLog, " : USBD Unregister ");        USB_HCD_LOG_EVENT(USBTU_WV_CLIENT_INIT, evLog, USBTU_WV_FILTER);        }    if ( !clientHandle)        {        USBTU_LOG("usbdClientUnRegister returns ERROR : NULL client handle \n");        return ERROR;        }    /*  unregister the client */    if (pDriver->pDriverData)        {        status = usbHstDriverDeregister (pDriver->pDriverData);        OSS_FREE (pDriver->pDriverData);        }    /* destroy the client thread */    if (pDriver->threadHandle)        if (OSS_THREAD_DESTROY (pDriver->threadHandle) != OK)            {            USBTU_LOG("usbdClientUnRegister returns ERROR:thread destroy failed\n");            s = ERROR;            }    /* destroy the client message queue */    if (pDriver->msgQid)        if (msgQDelete (pDriver->msgQid) != OK )            {            USBTU_LOG("usbdClientUnRegister returns ERROR : message queue \                       destroy failed \n");            s = ERROR;            }    /* destroy the irpComplete thread */    if (pDriver->irpThreadHandle)        if (OSS_THREAD_DESTROY (pDriver->irpThreadHandle) != OK)            {            USBTU_LOG("usbdClientUnRegister returns ERROR:thread destroy failed\n");            s = ERROR;            }    /* destroy the irpComplete message queue */    if (pDriver->msgQidIrpComplete)        if (msgQDelete (pDriver->msgQidIrpComplete) != OK )            {            USBTU_LOG("usbdClientUnRegister returns ERROR : message queue \                       destroy failed \n");            s = ERROR;            }    /* Unlink client structure */    OSS_MUTEX_TAKE (usbtuMutex, OSS_BLOCK);    usbListUnlink (&pDriver->tuDriverLink);    OSS_MUTEX_RELEASE(usbtuMutex);    /* free the client structure */    OSS_FREE (pDriver);    if ( status == USBHST_SUCCESS && s == OK )        {        USBTU_LOG ( "usbdClientUnRegister returns OK \n");        return OK;        }    else        {        USBTU_LOG ( "usbdClientUnRegister returns ERROR \n");        return ERROR;        }    }/***************************************************************************** usbdMngmtCallbackSet - sets management callback for a client** Management callbacks provide a mechanism for the USBD to inform clients* of asynchronous management events on the USB.  For example, if the USB* is in the SUSPEND state - see usbdBusStateSet() - and a USB device* drives RESUME signalling, that event can be reported to a client through* its management callback.** <clientHandle> is a client's registered handled with the USBD.* <mngmtCallback> is the management callback routine of type* USBD_MNGMT_CALLBACK which will be invoked by the USBD when management* events are detected.	<mngmtCallbackParam> is a client-defined parameter* which will be passed to the <mngmtCallback> each time it is invoked.* Passing a <mngmtCallback> of NULL cancels management event callbacks.** When the <mngmtCallback> is invoked, the USBD will also pass it the* USBD_NODE_ID of the root node on the bus for which the management event* has been detected and a code signifying the type of management event* as USBD_MNGMT_xxxx.** Clients are not required to register a management callback routine.* Clients that do use a management callback are permitted to register at* most one management callback per USBD_CLIENT_HANDLE.** RETURNS: OK, or ERROR if unable to register management callback** ERRNO: N/A*/STATUS usbdMngmtCallbackSet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    USBD_MNGMT_CALLBACK mngmtCallback,	/* management callback */    pVOID mngmtCallbackParam		/* client-defined parameter */    )    {    pUSBTU_DEVICE_DRIVER pDriver = (pUSBTU_DEVICE_DRIVER)clientHandle;    USBTU_LOG ( "usbdMngmtCallbackSet entered \n");    /* Wind View Instrumentation */    if ((usbtuInitWvFilter & USBTU_WV_FILTER) == TRUE)        {        char evLog[USBTU_WV_LOGSIZE];        strncpy ((char*)evLog,(char *)(pDriver->clientName),USBD_NAME_LEN );        strcat(evLog, " : Management Callback Register ");        USB_HCD_LOG_EVENT(USBTU_WV_CLIENT_INIT, evLog, USBTU_WV_FILTER);        }    /* If management callback already registered return ERROR */    if (pDriver->mngmtCallback && mngmtCallback != NULL)        {        USBTU_LOG("usbdMngmtCallbackSet returns ERROR : callback already set\n");        return ERROR;        }    /* register management callback */    pDriver->mngmtCallback = mngmtCallback;    pDriver->mngmtCallbackParam = mngmtCallbackParam;    USBTU_LOG ( "usbdMngmtCallbackSet returns OK \n");    return OK;    }/***************************************************************************** usbdBusStateSet - Sets bus state (e.g., suspend/resume)** This function allows a client to set the state of the bus to which* the specified <nodeId> is attached.  The desired <busState> is specified* as USBD_BUS_xxxx.** Typically, a client will use this function to set a bus to the SUSPEND* or RESUME state.  Clients must use this capability with care, as it will* affect all devices on a given bus - and hence all clients communicating* with those devices.*** RETURNS: OK, or ERROR if unable to set specified bus state** ERRNO: N/A*/STATUS usbdBusStateSet    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    USBD_NODE_ID nodeId,		/* node ID */    UINT16 busState			/* new bus state: USBD_BUS_xxxx */    )    {    /* This functionality is not yet provided */#if 0    USBHST_STATUS status;    USBD_NODE_ID rootId;    USBD_NODE_INFO   nodeInfo;    USBTU_LOG ( "usbdBusStateSet entered \n");    /* get the root id */    usbdNodeInfoGet (clientHandle, nodeId, &nodeInfo, sizeof (USBD_NODE_INFO));    rootId = nodeInfo.rootId;    switch( busState )        {        case USBD_BUS_SUSPEND :            status = usbHstSelectiveSuspend ((UINT32)rootId);            break;        case USBD_BUS_RESUME  :            status = usbHstSelectiveResume ((UINT32)rootId);            break;        default :            break;        }    if ( status != USBHST_SUCCESS)        {        USBTU_LOG ( "usbdBusStateSet returns ERROR \n");        return ERROR;        }    else        {        USBTU_LOG ( "usbdBusStateSet returns OK \n");        return OK;        }#endif    return OK;    }/***************************************************************************** usbdDynamicAttachRegister - Registers client for dynamic attach notification** Clients call this function to indicate to the USBD that they wish to be* notified whenever a device of the indicated class/sub-class/protocol is* attached or removed from the USB.  A client may specify that it wants to* receive notification for an entire device class or only for specific* sub-classes within that class.** <deviceClass>, <deviceSubClass>, and <deviceProtocol> must specify a USB* class/sub-class/protocol combination according to the USB specification.  For* the client抯 convenience, usbdLib.h automatically includes usb.h which defines* a number of USB device classes as USB_CLASS_xxxx and USB_SUBCLASS_xxxx.  A* value of USBD_NOTIFY_ALL in any/all of these parameters acts like a wildcard* and matches any value reported by the device for the corresponding field.** <attachCallback> must be a non-NULL pointer to a client-supplied callback* routine of the form USBD_ATTACH_CALLBACK:** \cs* typedef VOID (*USBD_ATTACH_CALLBACK)*     (*     USBD_NODE_ID nodeId,*     UINT16 attachAction,*     UINT16 configuration,*     UINT16 interface,*     UINT16 deviceClass,*     UINT16 deviceSubClass,*     UINT16 deviceProtocol*     );* \ce** Immediately upon registration the client should expect that it may begin* receiving calls to the <attachCallback> routine.  Upon registration,* Translation Unit will call the <attachCallback> for each device of the* specified class which is already attached to the system.  Thereafter, the* Translation unit will call the <attachCallback> whenever a new device of the* specified class is attached to the system or an already-attached device is* removed.** Each time the <attachCallback> is called, Translation Unit will pass the* Node Id of the device in <nodeId> and an attach code in <attachAction> which* explains the reason for the callback.  Attach codes are defined as:** \is* \i 'USBD_DYNA_ATTACH'* USBD is notifying the client that nodeId is a device which is now attached* to the system.** \i 'USBD_DYNA_REMOVE'* USBD is notifying the client that nodeId has been detached (removed) from* the system.* \ie** When the <attachAction> is USBD_DYNA_REMOVE the <nodeId> refers to a Node Id* which is no longer valid.  The client should interrogate its internal data* structures and delete any references to the specified Node Id.  If the client* had outstanding requests to the specified <nodeId>, such as data transfer* requests, then the USBD will fail those outstanding requests prior to calling* the <attachCallback> to notify the client that the device has been removed.* In general, therefore, transfer requests related to removed devices should* already be taken care of before the <attachCallback> is called.** A client may re-use a single <attachCallback> for multiple notification* registrations.  As a convenience to the <attachCallback> routine, the USBD* also passes the <deviceClass>, <deviceSubClass>, and <deviceProtocol> of the* attached/removed <nodeId> each time it calls the <attachCallback>.** Finally, clients need to be aware that not all USB devices report their class* information at the "device" level.  Rather, some devices report class types* on an interface-by-interface basis.  When the device reports class information* at the device level, then the USBD passes a <configuration> value of zero to* the attach callback and calls the callback only a single time for each device.* When the device reports class information at the interface level, then the* Translation Unit invokes the attach callback once for each interface which* matches the client's <deviceClass>/<deviceSubClass>/<deviceProtocol>* specification.* In this case, the USBD also passes the corresponding configuration & interface* numbers in <configuration> and <interface> each time it invokes the callback.** RETURNS: OK, or ERROR if unable to register for attach/removal notification.** ERRNO: N/A*/STATUS usbdDynamicAttachRegister    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    UINT16 deviceClass, 		/* USB class code */    UINT16 deviceSubClass,		/* USB sub-class code */    UINT16 deviceProtocol,		/* USB device protocol code */    USBD_ATTACH_CALLBACK attachCallback /* User-supplied callback  */    )    {    pUSBHST_DEVICE_DRIVER pDriverData;    pUSBTU_DEVICE_DRIVER pDriver = (pUSBTU_DEVICE_DRIVER)clientHandle;    USBHST_STATUS status;    USBTU_LOG ( "usbdDynamicAttachRegister entered \n");    /* Wind View Instrumentation */    if ((usbtuInitWvFilter & USBTU_WV_FILTER) == TRUE)        {        char evLog[USBTU_WV_LOGSIZE];        strncpy ((char*)evLog,(char *)(pDriver->clientName),USBD_NAME_LEN );        strcat(evLog, " : Dynamic Attach/Dettach Callback Register ");        USB_HCD_LOG_EVENT(USBTU_WV_CLIENT_INIT, evLog, USBTU_WV_FILTER);        }    /* allocate structure for driver specific data  */    if ( !(pDriverData = OSS_CALLOC (sizeof (USBHST_DEVICE_DRIVER))))        {        USBTU_LOG ("usbdDynamicAttachRegister returns ERROR: alloc failed \n");        return ERROR;        }    /* initialize structure with driver specific data */    pDriverData->bFlagVendorSpecific = 0;    pDriverData->uVendorIDorClass = deviceClass;    pDriverData->uProductIDorSubClass = deviceSubClass;    pDriverData->uBCDUSBorProtocol = deviceProtocol;    pDriverData->addDevice = usbtuInitDeviceAdd;    pDriverData->removeDevice = usbtuInitDeviceRemove;    pDriverData->suspendDevice =  usbtuInitDeviceSuspend;    pDriverData->resumeDevice = usbtuInitDeviceResume;    /* register the client with USBD */    status = usbHstDriverRegister (pDriverData, NULL);    if (status != USBHST_SUCCESS)        {        /* release driver specific structure */        OSS_FREE (pDriverData);        USBTU_LOG ( "usbdDynamicAttachRegister returns ERROR \n");        return ERROR;        }    /* initialize client structure */    pDriver->class = deviceClass;    pDriver->subclass = deviceSubClass;    pDriver->protocol = deviceProtocol;    pDriver->attachCallback = attachCallback;    pDriver->pDriverData = pDriverData;    USBTU_LOG ( "usbdDynamicAttachRegister returns OK \n");    return OK;    }/***************************************************************************** usbdDynamicAttachUnRegister - Unregisters client for attach notification** This function cancels a client抯 earlier request to be notified for the* attachment and removal of devices within the specified class.  <deviceClass>,* <deviceSubClass>, <deviceProtocol>, and <attachCallback> are defined as for* the usbdDynamicAttachRegister() function and must match exactly the parameters* passed in an earlier call to usbdDynamicAttachRegister.** RETURNS: OK, or ERROR if unable to unregister for attach/removal notification.** ERRNO: N/A*/STATUS usbdDynamicAttachUnRegister    (    USBD_CLIENT_HANDLE clientHandle,	/* Client handle */    UINT16 deviceClass, 		/* USB class code */    UINT16 deviceSubClass,		/* USB sub-class code */    UINT16 deviceProtocol,		/* USB device protocol code */    USBD_ATTACH_CALLBACK attachCallback /* user-supplied callback routine */    )    {    USBHST_STATUS status = USBHST_SUCCESS;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线中文字幕一区二区| 亚洲日本中文字幕区| 欧美激情一区二区三区蜜桃视频| 国产精品不卡一区| 裸体健美xxxx欧美裸体表演| 色婷婷久久久综合中文字幕| 久久亚洲综合色一区二区三区 | 日韩中文字幕1| 成人午夜精品在线| 精品久久久久久久人人人人传媒| 亚洲精品国产a| 成人黄色网址在线观看| 日韩一区二区三区在线观看| 亚洲午夜电影在线观看| www.亚洲色图.com| 日本一区二区综合亚洲| 久久99这里只有精品| 91精品国产一区二区三区| 亚洲精品国产精品乱码不99| 国产精品18久久久久久久久 | 欧美变态tickle挠乳网站| 一区二区三区在线视频播放| 不卡在线观看av| 精品88久久久久88久久久| 日本大胆欧美人术艺术动态| 欧美色图一区二区三区| 亚洲人一二三区| 成人av在线资源| 国产精品国模大尺度视频| 成人一级片在线观看| 欧美精品一区二区在线观看| 精油按摩中文字幕久久| 日韩欧美一级精品久久| 欧美aaa在线| 26uuu精品一区二区在线观看| 麻豆国产91在线播放| 日韩欧美色综合| 理论电影国产精品| 久久婷婷成人综合色| 国内精品不卡在线| 久久久久亚洲蜜桃| 国产一区欧美日韩| 国产偷v国产偷v亚洲高清| 成人短视频下载| 亚洲欧美一区二区三区孕妇| 在线视频国内自拍亚洲视频| 亚洲中国最大av网站| 欧美四级电影在线观看| 午夜激情一区二区三区| 精品久久久久久综合日本欧美| 蓝色福利精品导航| 国产清纯美女被跳蛋高潮一区二区久久w | 国产婷婷色一区二区三区四区| 丰满亚洲少妇av| 亚洲综合偷拍欧美一区色| 欧美精品xxxxbbbb| 国产一区二区影院| 亚洲精品乱码久久久久久黑人| 欧美日韩国产免费一区二区| 韩国在线一区二区| 亚洲丝袜美腿综合| 欧美人牲a欧美精品| 国产成人午夜99999| 亚洲国产精品麻豆| 国产亚洲一二三区| 欧美美女黄视频| 成人美女视频在线看| 日韩一区精品字幕| 国产精品美日韩| 91精品国产综合久久久蜜臀图片 | 蜜臀av性久久久久av蜜臀妖精 | 欧美日韩视频在线观看一区二区三区| 男男视频亚洲欧美| 最新不卡av在线| 日韩欧美三级在线| 91国偷自产一区二区三区成为亚洲经典 | 91精品国产色综合久久不卡蜜臀 | 久久se精品一区二区| 综合久久综合久久| 26uuu另类欧美| 欧美三级电影在线看| 成人免费视频免费观看| 日韩精品1区2区3区| |精品福利一区二区三区| 精品乱人伦一区二区三区| 欧美视频在线不卡| bt欧美亚洲午夜电影天堂| 久久国产视频网| 亚洲伊人色欲综合网| 亚洲欧洲www| 久久久www免费人成精品| 欧美一区在线视频| 色综合久久久久综合99| 成人国产精品免费观看动漫| 免费成人在线观看| 亚洲成人你懂的| 亚洲激情综合网| 亚洲视频网在线直播| 国产精品蜜臀在线观看| 久久久久久免费毛片精品| 日韩久久久久久| 777午夜精品免费视频| 欧美亚洲动漫另类| 日本丶国产丶欧美色综合| av在线播放成人| 99久久亚洲一区二区三区青草| 国产精品一区在线观看乱码| 亚洲黄一区二区三区| 欧美日韩视频一区二区| 93久久精品日日躁夜夜躁欧美| 精品一区二区免费| 肉丝袜脚交视频一区二区| 亚洲精品成人悠悠色影视| 国产精品高潮呻吟久久| 亚洲国产成人私人影院tom| 久久久久国产精品麻豆ai换脸| 欧美不卡一区二区三区四区| 91.麻豆视频| 日韩视频一区在线观看| 日韩视频免费观看高清完整版| 91精品国产91综合久久蜜臀| 欧美一区二区三区免费观看视频| 欧美视频三区在线播放| 欧美电影一区二区三区| 欧美精品国产精品| 日韩免费电影网站| www国产成人免费观看视频 深夜成人网| 精品国产一区二区三区不卡| 久久亚洲一级片| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 五月天激情小说综合| 日本三级亚洲精品| 国产精品一品二品| 91香蕉视频mp4| 欧美日韩国产区一| 欧美tickling网站挠脚心| 久久精品视频在线看| 国产精品家庭影院| 亚洲第一在线综合网站| 久久国产欧美日韩精品| 成人视屏免费看| 欧美日韩一区二区不卡| 日韩欧美中文字幕一区| 亚洲国产精华液网站w| 亚洲国产精品一区二区www在线| 免费观看一级欧美片| 国产1区2区3区精品美女| 91久久人澡人人添人人爽欧美| 制服丝袜成人动漫| 亚洲国产精品99久久久久久久久| 亚洲美女精品一区| 日韩高清中文字幕一区| 成人国产精品免费观看动漫| 欧美日韩午夜在线| 国产日韩欧美精品在线| 五月婷婷激情综合| 国产.精品.日韩.另类.中文.在线.播放| 9l国产精品久久久久麻豆| 欧美午夜精品电影| 国产欧美一区在线| 日韩高清不卡在线| 91免费视频观看| 精品国产伦一区二区三区观看方式 | 日韩女优视频免费观看| 最新中文字幕一区二区三区| 日本成人中文字幕在线视频| 97超碰欧美中文字幕| 日韩欧美电影一二三| 亚洲激情中文1区| 国产成人免费av在线| 日韩欧美视频一区| 亚洲一区二区在线免费观看视频| 国产电影精品久久禁18| 日韩欧美在线1卡| 亚洲一区二区在线免费看| 成人av集中营| 欧美成人a∨高清免费观看| 亚洲成av人影院| 色婷婷久久久综合中文字幕| 国产欧美日韩精品一区| 久草中文综合在线| 欧美军同video69gay| 亚洲国产成人av网| 91精彩视频在线| 亚洲人成网站色在线观看 | 久久99久久99精品免视看婷婷| 91福利在线免费观看| 国产精品家庭影院| 丁香亚洲综合激情啪啪综合| 精品99999| 精品一区二区在线免费观看| 欧美精品久久一区二区三区| 亚洲国产精品久久久久婷婷884| 99国产精品一区| 亚洲人被黑人高潮完整版| 色综合久久88色综合天天免费| 成人免费一区二区三区在线观看| 国产91精品久久久久久久网曝门| 国产亚洲成年网址在线观看| 国产黄色成人av|