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

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

?? cudal.h

?? reference about wireless design which is helpful to everyone
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    USBIOERR SetInterface(BYTE interfaceIndex, BYTE alternateSettingIndex);
    // Gets the current alternate setting of an interface 
    USBIOERR GetInterface(BYTE interfaceIndex, BYTE *pAlternateSettingIndex);

protected:
    // Protected constructor (to prevent user instantiation)
    CudalDongle(CUDAL_DONGLE_INFO *pDongleInfo, CUsbIo *pUsbIo);
    
    /// The dongle info for this object (a copy of the struct passed to CreateDongle())
    CUDAL_DONGLE_INFO m_dongleInfo;
    /// Pointer to the associated CUsbIo object
    CUsbIo *m_pUsbIo;

private:
    /// Mutex used to ensure that dongle enumeration and creation safe
    static HANDLE m_hMutexEnum;
    /// Mutex used to ensure that only one CudalDongle object can be created for each physical dongle
	HANDLE m_hMutexDongle;
    /// Tells whether or not a created dongle is already used (if so, CreateDongle() should fail)
    BOOL m_dongleUsed;
    /// GUID used by the USBIO driver to identify the 
    const GUID *m_pGuid;

    /// Is the dongle already in use? (a mutex is used to ensure exclusive access)
    BOOL IsDongleUsed() { return m_dongleUsed; }
    // Enters data into the supplied CUDAL_DONGLE_INFO struct
    static BOOL CreateDongleInfo(CUDAL_DONGLE_INFO *pDongleInfo, CUsbIo *pUsbIo);

}; // CudalDongle




/** \brief  A \ref CudalPipe helper class used for asynchronous transfers 
 *
 * The class supports transfers up to 4096 bytes.
 */
class CUDAL_API CudalAsyncInfo {
public:
    // Constructor
    CudalAsyncInfo();
    // Destroys the pipe object
    virtual ~CudalAsyncInfo();

    /// Pointer to the USBIO buffer object
    CUsbIoBuf *m_pUsbIoBuf;
    /// In read mode a pointer to the user-provided receive buffer, in write mode \c NULL.
    void *m_pData;
    /// The (maximum) number bytes to transfer
    DWORD m_length;

}; // CudalAsyncInfo




/** \brief  The \ref CudalPipe class encapsulates a BULK or INTERRUPT pipe.
 *
 * A \ref CudalPipe object supports data transfers on a single endpoint, either from the host to the 
 * device (OUT), or from the device to the host (IN). To enable for transfers in both directions, or on 
 * additional endpoints, simply create more \ref CudalPipe objects.
 *
 * \section section_pipe_const_dest Construction and Destruction
 * The pipe object is always associated with a \ref CudalDongle object. Call
 * \ref CudalDongle::CreatePipe() with the desired endpoint index and direction to create it. When the
 * \ref CudalPipe object is no longer to be used, it should be destroyed by simply deleting it. Be sure
 * to delete all pipe objects before deleting the associated dongle object.
 *
 * \section section_pipe_data_transfers Data Transfers
 * There is support for both synchronous and asynchronous transfers. In \b synchronous mode, using 
 * \ref ReadSync() or \ref WriteSync(), the read or write function waits until the operation is done or
 * the specified timeout is reached. If a transfer was started before the timeout, but did not complete,
 * there is no way to tell how far it actually got.
 * 
 * In \b asynchronous mode, the \ref ReadAsync() or \ref WriteAsync() function returns immediately, 
 * and the result is polled later on by using the \ref WaitAsync() function. If \ref WaitAsync() 
 * experiences a timeout, nothing happens, and the transfer still remains active.
 *
 * To \b abort all submitted transfers, the \ref AbortAll function must be called once, followed by a 
 * call to \ref WaitAsyncTermination() for each pending asynchronous transfer.
 *
 * \section section_pipe_examples Examples of Usage
 * The following code creates a pipe object bound to endpoint 4 IN, and reads up to 42 bytes from it, 
 * with a 300 msec timeout. It then destroys the object.
 *
 * \code
 * CudalDongle *pDongle;
 * ... Create the CudalDongle object ...
 * 
 * // Create an IN pipe on endpoint 4
 * CudalPipe *pPipe = pDongle->CreatePipe(4, TRUE);
 * if (pPipe) {
 * 
 *     // Read 42 bytes from it
 *     BYTE pData[42];
 *     DWORD length = sizeof(pData);
 *     switch (ReadSync(pData, &length, 300)) {
 *     case USBIO_ERR_SUCCESS:
 *         if (length == 42) {
 *             ... Process pData ...
 *         } else {
 *             ... Process pData ...
 *         }
 *         break;
 *     case USBIO_ERR_TIMEOUT:
 *         ... Handle timeout ...
 *         break;
 *     default:
 *         ... Handle other error ...
 *     }
 *
 *     // Destroy the pipe
 *     delete pPipe;
 * }
 * ...
 * \endcode
 *
 * The following code creates a pipe object bound to endpoint 3 IN, and repeatedly reads up to 30 bytes.
 * Each time something is received, a processing function is called. The quit flag can be set by another 
 * thread to abort the operation. Pay special attention to the clean-up procedure at the end!
 *
 * \code
 * CudalDongle *pDongle;
 * ... Create the CudalDongle object ...
 * 
 * // Create an IN pipe on endpoint 3
 * CudalPipe *pPipe = pDongle->CreatePipe(3, TRUE);
 * if (pPipe) {
 *
 *     CudalAsyncInfo asyncInfo;
 *     BYTE pBuffer[30];
 *     DWORD length;
 *
 *     // Start polling
 *     if (pPipe->ReadAsync(&asyncInfo, pBuffer, sizeof(pBuffer))) {
 *         
 *         // As long as we're not ordered to quit...
 *         while (!quitAsap) {
 * 
 *             // Did we get anything?
 *             switch (pPipe->WaitAsync(&asyncInfo, &length, 100)) 
 *             case USBIO_ERR_SUCCESS:
 *
 *                 // Process the received data
 *                 ProcessFunction(pBuffer, length);
 *
 *                 // Continue polling
 *                 if (!pPipe->ReadAsync(&asyncInfo, pBuffer, sizeof(pBuffer))) {
 *                     goto error;
 *                 }
 *                 break;
 *             case USBIO_ERR_TIMEOUT:
 *                 // A timeout does not have any effect
 *                 break;
 *             default:
 *                 // Fatal error (possibly disconnection)
 *                 goto error;
 *             }
 *         }
 *
 * error:  // Clean up if necessary
 *         pPipe->AbortAll();
 *         pPipe->WaitAsyncTermination(&asyncInfo);
 *     }
 *
 *     // Destroy the pipe
 *     delete pPipe;
 * }
 * ...
 * \endcode
 */
class CUDAL_API CudalPipe {
public:
    // Destroys the pipe object
    virtual ~CudalPipe();

    // Submits a read request on the pipe, and waits for it to complete
    USBIOERR ReadSync(void *pData, DWORD *pLength, DWORD timeout = 5000);
    // Submits a write request on the pipe, and waits for it to complete
    USBIOERR WriteSync(void *pData, DWORD *pLength, DWORD timeout = 5000);

    // Submits a read request on the pipe, and returns immediately
    BOOL ReadAsync(CudalAsyncInfo *pInfo, void *pData, DWORD maxLength);
    // Submits a write request on the pipe, and returns immediately
    BOOL WriteAsync(CudalAsyncInfo *pInfo, void *pData, DWORD length);
    // Waits for an asynchronous read/write operation to complete
    USBIOERR WaitAsync(CudalAsyncInfo *pInfo, DWORD *pActualLength, DWORD timeout = 5000);
    /// Waits for an asynchronous operation to be terminatated
    USBIOERR WaitAsyncTermination(CudalAsyncInfo *pInfo) { return WaitAsync(pInfo, NULL, INFINITE); }
    

    // Aborts all transfer on the pipe
    USBIOERR AbortAll();
    
    /// Returns the endpoint index that was passed to \ref CudalDongle::CreatePipe() when creating the pipe
    int GetEndpointIndex() { return m_endpointIndex; }
    /// Returns the data direction that was passed to \ref CudalDongle::CreatePipe() when creating the pipe
    BOOL IsDirectionIn() { return m_directionIsIn; }

protected:
	// Protected constructor (to prevent user instantiation)
	CudalPipe(CUsbIoPipe *pUsbIoPipe, BYTE endpointIndex, BOOL directionIsIn);

	/// Pointer to the associated CUsbIoPipe object
    CUsbIoPipe *m_pUsbIoPipe;
        
private:
    /// The endpoint index (consisting of the 7 LSBs of the endpoint address)
    int m_endpointIndex;
    /// Is this an IN pipe (for data transfer from the dongle to the host)?
    BOOL m_directionIsIn;

    // Let CudalDongle access private members
    friend CudalDongle;

}; // CudalPipe


#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品美女在线播放| 精品国产伦理网| 国产一区二区女| 亚洲伦理在线精品| 久久综合九色综合欧美就去吻| av中文字幕不卡| 美女免费视频一区二区| 亚洲美女视频一区| 久久久99免费| 欧美人与z0zoxxxx视频| 99久久精品99国产精品| 激情综合色综合久久| 亚洲成在人线在线播放| 国产精品久久久久婷婷| 久久久久国产成人精品亚洲午夜| 欧美偷拍一区二区| 99久久免费国产| 福利一区二区在线观看| 美腿丝袜亚洲一区| 午夜精品福利一区二区三区av | 欧美私人免费视频| aaa欧美日韩| 成人av影院在线| 国精品**一区二区三区在线蜜桃| 五月婷婷色综合| 亚洲国产精品久久人人爱 | 六月丁香婷婷久久| 亚洲不卡av一区二区三区| 玉米视频成人免费看| 亚洲欧美一区二区久久| 国产精品网站在线观看| 久久久美女艺术照精彩视频福利播放| 91精品在线一区二区| 精品污污网站免费看| 在线中文字幕一区| 色综合欧美在线| 色乱码一区二区三区88| 91免费在线视频观看| 99热国产精品| 99久久久久免费精品国产| 91在线免费看| 91免费精品国自产拍在线不卡| 成人晚上爱看视频| 成人av电影免费在线播放| 丁香婷婷综合激情五月色| 成人午夜激情视频| 成人国产精品视频| 色综合色狠狠天天综合色| 色屁屁一区二区| 欧美人与性动xxxx| 欧美一区二区三区四区在线观看| 日韩欧美亚洲国产精品字幕久久久 | 中文字幕一区二区三区四区| 国产精品久久久久久久久动漫| 国产精品久久久久婷婷| 一区二区在线观看免费视频播放| 亚洲精品视频一区二区| 怡红院av一区二区三区| 亚洲激情成人在线| 一区二区三区电影在线播| 亚洲国产精品一区二区www在线 | 免费视频一区二区| 免费成人在线观看视频| 国产精品一区二区视频| 国产风韵犹存在线视精品| 成人av在线网站| 色欧美片视频在线观看在线视频| 欧美日韩综合一区| 日韩视频免费直播| 久久精品视频在线看| 国产精品久久久久久久裸模| 国产欧美一区二区三区网站| 国产精品久久久久影院| 国产精品久久久久久亚洲伦| 亚洲成人一区在线| 日韩激情av在线| 国产激情精品久久久第一区二区| 韩国视频一区二区| 91国偷自产一区二区三区成为亚洲经典 | 伊人婷婷欧美激情| 日本不卡免费在线视频| 成人精品一区二区三区四区 | 欧美日韩卡一卡二| 欧美日韩一级二级三级| 欧美电视剧在线观看完整版| 国产精品天美传媒| 亚洲高清中文字幕| 国产不卡免费视频| 一本在线高清不卡dvd| 精品视频资源站| 久久精品视频免费| 亚洲欧美日韩国产另类专区| 国产综合色产在线精品| 一本大道久久a久久综合| 日韩精品在线网站| 日韩久久一区二区| 青青草97国产精品免费观看| 国产成人激情av| 91精品在线免费观看| 欧美国产精品一区| 美女一区二区在线观看| 91小视频免费观看| www国产亚洲精品久久麻豆| 综合久久久久久久| 国产一区在线观看视频| 欧美性受极品xxxx喷水| 中文字幕中文字幕一区二区| 日韩1区2区日韩1区2区| 国产成人免费在线观看| 欧美日韩免费高清一区色橹橹| 久久奇米777| 五月天激情综合| 国产 欧美在线| 日韩一级精品视频在线观看| 国产精品大尺度| 国产毛片精品视频| 日韩欧美中文字幕公布| 一区二区三区欧美| 成人av电影免费观看| 久久亚洲影视婷婷| 日本不卡在线视频| 91丨porny丨蝌蚪视频| 欧美激情艳妇裸体舞| 日韩av电影天堂| 欧美巨大另类极品videosbest| 国产精品色在线| 日本视频一区二区三区| 在线区一区二视频| 国产精品国产三级国产aⅴ入口| 精品一区二区三区免费毛片爱| 欧美午夜电影一区| 亚洲蜜臀av乱码久久精品| 91麻豆自制传媒国产之光| 国产欧美一区视频| 国产电影精品久久禁18| 精品理论电影在线观看| 国精产品一区一区三区mba桃花| 91精品啪在线观看国产60岁| 日本在线不卡视频| 91成人国产精品| 一区二区三区毛片| 91年精品国产| 亚洲人一二三区| 97se亚洲国产综合自在线不卡| 国产精品国产三级国产普通话三级 | 日韩免费性生活视频播放| 日韩av午夜在线观看| 欧美大白屁股肥臀xxxxxx| 日韩电影一二三区| 日韩精品一区二区在线| 免费精品99久久国产综合精品| 欧美成人a视频| 久久99精品久久久久久国产越南| 国产视频一区二区在线| 粉嫩蜜臀av国产精品网站| 一区在线观看视频| jizzjizzjizz欧美| 亚洲美女偷拍久久| 欧美网站一区二区| 亚洲精品国产视频| 欧美日韩一区二区欧美激情| 日韩高清不卡一区二区三区| 精品国产乱码久久久久久久久| 精品一区二区三区免费播放| 国产精品网站在线| 国产成人综合在线观看| 亚洲欧美另类在线| 91女人视频在线观看| 亚洲成人一区二区在线观看| 26uuu成人网一区二区三区| 国产成人在线免费| 一区二区理论电影在线观看| 6080日韩午夜伦伦午夜伦| 国产露脸91国语对白| 亚洲色欲色欲www| 91精品国产手机| 国产精品1024| 午夜久久久久久久久| 国产亚洲精久久久久久| 91无套直看片红桃| 麻豆91在线观看| 中日韩av电影| 欧美理论电影在线| 国内精品免费**视频| 亚洲乱码国产乱码精品精可以看| 欧美理论电影在线| 不卡一区二区中文字幕| 亚洲一区二区精品视频| 国产欧美精品一区aⅴ影院 | 色狠狠一区二区三区香蕉| 亚洲国产aⅴ天堂久久| 国产欧美一区二区精品秋霞影院| 色噜噜狠狠成人中文综合| 久久爱www久久做| 亚洲欧洲国产日本综合| 欧美大黄免费观看| 91精品办公室少妇高潮对白| 国产在线国偷精品产拍免费yy| 综合自拍亚洲综合图不卡区| 欧美成人精品高清在线播放|