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

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

?? oswrap_win.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* osWrap_win.c - DK 2.0 functions to hide os dependent calls */


#ident  "ACI $Id: //depot/sw/branches/ART_V53/sw/src/dk/mdk/common/osWrap_win.c#1 $, $Header: //depot/sw/branches/ART_V53/sw/src/dk/mdk/common/osWrap_win.c#1 $"
static  char *rcsid =  "ACI $Id: //depot/sw/branches/ART_V53/sw/src/dk/mdk/common/osWrap_win.c#1 $, $Header: //depot/sw/branches/ART_V53/sw/src/dk/mdk/common/osWrap_win.c#1 $"; 

/* Copyright (c) 2000 Atheros Communications, Inc., All Rights Reserved */
#ifndef PERL_CORE
 #include <winsock2.h>
#endif
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <stddef.h>
#include <Tlhelp32.h>
#include <io.h>
#include "wlantype.h"
#include "athreg.h"
#include "manlib.h"
#include "mInst.h" 
#include "dk_common.h"


#if defined(PREDATOR_BUILD_____)
#undef WRITE_BUF_SIZE
#define WRITE_BUF_SIZE (1 * 4092)  // 3 pages for faster transfer of large data, like pci writes in  resetDevice
#endif

#define NAME_PREFIX "\\\\.\\pipe\\"
#define SEND_BUF_SIZE		1024
#define inPipe "\\PIPE00"
#define outPipe "\\PIPE01"

#define IN_QUEUE	0
#define OUT_QUEUE	1

extern volatile A_BOOL inSignalHandler;

// Local functions
static int	socketListen(OS_SOCK_INFO    *pOSSock);
static int	socketConnect(char *target_hostname, int target_port_num,
			       A_UINT32 *ip_addr);
A_UINT32 os_com_read(OS_SOCK_INFO *pOSSock, A_UINT8 *buf, A_INT32 *len);
A_UINT32 write_device(OS_SOCK_INFO *pOSSock, A_UINT8 *buf, A_INT32 *len);
A_UINT32 read_device(OS_SOCK_INFO *pOSSock, A_UINT8 *buf, A_INT32 *len);
A_UINT32 os_com_close(OS_SOCK_INFO *pOSSock);
A_UINT32 os_com_open(OS_SOCK_INFO *pOSSock);
extern HANDLE open_device(A_UINT32 device_fn, A_UINT32 devIndex, char*);

static A_UINT8 recvBuffer[MIN_TRANSFER_SIZE];
char lpBuffer[6000];
static A_UINT8 rBuffer[MAX_TRANSFER_SIZE];
static A_UINT32 rBufferIndex;

DWORD getBytesBuffered(HANDLE handle, DWORD queueType);

/*
 * A_STATUS onlyOneRunning( char *progname)
 *
 *  DESCRIPTION: Check to make sure that there are no other programs of either of these
 *      names currently running.
 *
 *  RETURNS: A_ERROR if there is another client, else A_OK.
 *
 */
A_STATUS onlyOneRunning(char *prog1, char *prog2)
{
	HANDLE toolHandle;
	PROCESSENTRY32 lppe;
	int progCnt = 0;

	// Snapshot the process table
	if( (HANDLE)-1 == (toolHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) )
		return A_ERROR;

	// Seach through the process table for the # of occurences of progName
	lppe.dwSize = sizeof(PROCESSENTRY32);
	if(	FALSE == Process32First(toolHandle, &lppe) ) {
		CloseHandle( toolHandle );
		return A_ERROR;
	}
    if((strstr(prog1, lppe.szExeFile) != NULL)  || 
       (strstr(prog2, lppe.szExeFile) != NULL)) {
		progCnt++;
    }
	while( FALSE != Process32Next(toolHandle, &lppe) ) {
        if((strstr(prog1, lppe.szExeFile) != NULL)  || 
           (strstr(prog2, lppe.szExeFile) != NULL)) {
			progCnt++;
        }
	}
	CloseHandle( toolHandle );
	if( progCnt > 2) 
		return A_ERROR;
	return A_OK;
}

A_STATUS osThreadCreate
    (
    void            threadFunc(void * param), 
    void		*param,
	A_CHAR*		threadName,
	A_INT32 	threadPrio,
	A_UINT32		*threadId
    )
{
	HANDLE hThread;	
	DWORD thId;
	
//	_beginthread(threadFunc, 0, param);
	hThread = CreateThread(NULL, 0, (unsigned long(__stdcall *)(void *))(threadFunc), param, 0, &thId);

    if(hThread == NULL) {
		 return A_ERROR;
	}

	if (threadId != NULL) {
		*threadId = (A_UINT32)hThread;
	}

    return A_OK;
}  

void osThreadKill
(
	A_UINT32 threadId
)
{
	HANDLE hThread;	

	hThread = (HANDLE)threadId;
	TerminateThread(hThread,0);
	
	return;
}


/**************************************************************************
* osSockRead - read len bytes into *buf from the socket in pSockInfo
*
* This routine calls recv for socket reading
* 
* RETURNS: length read
*/

A_INT32
osSockRead
(
    OS_SOCK_INFO    *pSockInfo,
    A_UINT8         *buf,
    A_INT32         len
)
{
    int dwRead, i = 0;
	A_INT32 cnt;
	A_UINT8* bufpos; 
	A_INT32 tmp_len;
    	A_UINT32 err;
	A_INT32 total_len;
	A_INT32		bytesRemaining; 
	static A_INT32  bytesRead=0; 
	static A_INT32    cmdlen_read=0, cmdlen_size=0;


#ifdef _DEBUG
    q_uiPrintf("osSockRead: buf=0x%08lx  len=%d\n", (unsigned long) buf, len);
#endif
	if (pSockInfo->port_num != USB_PORT_NUM && inSignalHandler == TRUE) return -1;

	tmp_len = len;
   	bufpos = buf;
	dwRead = 0;
	
    switch(pSockInfo->port_num) {
            case COM1_PORT_NUM:
            case COM2_PORT_NUM:
            case COM3_PORT_NUM:
			case COM4_PORT_NUM:{
                    if ((err=os_com_read(pSockInfo, buf, &tmp_len)) != 0) {
                        uiPrintf("ERROR::osSockRead::Com port read failed with error = %x\n", err);
                        return 0;
                    }
                    dwRead = tmp_len; // return number of bytes read
                break;
	            } // end of case
            case SOCK_PORT_NUM: {
                while (len) {
                    cnt = recv(pSockInfo->sockfd, (char *)bufpos, len, 0);

                    if ((cnt == SOCKET_ERROR) || (!cnt)) break;

                    dwRead += cnt;
                    len  -= cnt;
                    bufpos += cnt;
                }

                len = tmp_len;

                if (dwRead != len) {
                    dwRead = 0;
                }
#ifdef _DEBUG
                else {
                    for (i=0;(i<len)&&(i<16);i++) {
                        q_uiPrintf(" %02X",*((unsigned char *)buf+i));
                        if (3==(i%4)) q_uiPrintf(" ");
                    }
                    q_uiPrintf("\n");
                }
#endif // _DEBUG
                break;
                }
            case USB_PORT_NUM: {
	            if (!cmdlen_read) {
					total_len = MIN_TRANSFER_SIZE;
						pSockInfo->sockfd = pSockInfo->inHandle;
                    	if ((err=read_device(pSockInfo, recvBuffer, &total_len)) != 0) {
                      		uiPrintf("ERROR::osSockRead::USB  read failed with error = %x\n", err);
                      		return 0;
                    	}
#ifdef _DEBUG
		        q_uiPrintf("osSockRead::cmdlen_read=%d:recv_buf_sem set\n", cmdlen_read);
#endif
			memcpy(rBuffer, recvBuffer, MIN_TRANSFER_SIZE);
			memcpy(buf, rBuffer, len);
			rBufferIndex = MIN_TRANSFER_SIZE;
			cmdlen_size = len;
			bytesRead = MIN_TRANSFER_SIZE - len;
		    }
		    else {
	  		  bytesRemaining = len - bytesRead;
#ifdef _DEBUG
			  q_uiPrintf("bytesRemaining=%d\n", bytesRemaining);
#endif
	  		  while(bytesRemaining>0) {
				total_len = MIN_TRANSFER_SIZE;
							pSockInfo->sockfd = pSockInfo->inHandle;
                    		if ((err=read_device(pSockInfo, recvBuffer, &total_len)) != 0) {
                      		   uiPrintf("ERROR::osSockRead::USB  read failed with error = %x\n", err);
                      		   return 0;
                    		}
#ifdef _DEBUG
				q_uiPrintf("osSockRead::cmdlen_read=%d:recv_buf_sem set\n", cmdlen_read);
#endif
				memcpy(rBuffer+rBufferIndex, recvBuffer, MIN_TRANSFER_SIZE);
	    			bytesRead+= MIN_TRANSFER_SIZE;
				rBufferIndex+=MIN_TRANSFER_SIZE;
	    			bytesRemaining = len - bytesRead;
	  		 }
	  		 memcpy(buf, rBuffer+cmdlen_size, len);
		    }
		    cmdlen_read = !cmdlen_read;
		    dwRead = bytesRead;
#ifdef _DEBUG
                    for (i=0;i<len;i++) {
                        q_uiPrintf(" %02X",*((unsigned char *)buf+i));
                        if (3==(i%4)) q_uiPrintf(" ");
                    }
                    q_uiPrintf("\n");
#endif
              		break;
            		}// end of case
    }
#ifdef _DEBUG
    q_uiPrintf(":osSockRead:%d read\n", dwRead);
#endif

    return dwRead;
}

/**************************************************************************
* osSockWrite - write len bytes into the socket, pSockInfo, from *buf
*
* This routine calls a OS specific routine for socket writing
* 
* RETURNS: length read
*/
A_INT32
osSockWrite
    (
    OS_SOCK_INFO    *pSockInfo,
    A_UINT8         *buf,
    A_INT32         len
    )
{
		int	dwWritten, i = 0;
		A_INT32 bytes,cnt;
		A_UINT8* bufpos; 
		A_INT32 tmp_len;
        	A_UINT32 err;
		A_UINT8  *pad_buf;
		A_INT32 numblocks, pad_len, total_len;

//		if (inSignalHandler == TRUE) return 0;
	if (pSockInfo->port_num != USB_PORT_NUM && inSignalHandler == TRUE) return -1;

#ifdef _DEBUG 
    q_uiPrintf("osSockWrite: buf=0x%08lx  len=%d\n", (unsigned long) buf, len);
    for (i=0;(i<len)&&(i<16);i++) {
      q_uiPrintf(" %02X",*((unsigned char *)buf +i));
      if (3==(i%4)) q_uiPrintf(" ");
    }
    q_uiPrintf("\n");
#endif // _DEBUG

    switch(pSockInfo->port_num) {
            case COM1_PORT_NUM:
            case COM2_PORT_NUM:
            case COM3_PORT_NUM: 
			case COM4_PORT_NUM: {
                if ((err=write_device(pSockInfo, buf, &len)) != 0) {
                        uiPrintf("ERROR::osSockWrite::Com port write failed with error = %x\n", err);
                        return 0;
                }
	            dwWritten = len;
                break;
	            } // end of case
            case SOCK_PORT_NUM: {
		        tmp_len = len;
	   	        bufpos = buf;
		        dwWritten = 0;

			
		        while (len) {
			        if (len < SEND_BUF_SIZE) bytes = len;
			        else bytes = SEND_BUF_SIZE;
	    	
			        cnt = send(pSockInfo->sockfd, (char *)bufpos, bytes, 0);
    
			        if (cnt == SOCKET_ERROR) break;
    
			        dwWritten += cnt;
		    	
			        len  -= cnt;
			        bufpos += cnt;
    	        }

		        len = tmp_len;
    
		        if (dwWritten != len) {
			        dwWritten = 0;
		        }

            break;
	        } // end of case
            case USB_PORT_NUM: {
		numblocks = (len/MIN_TRANSFER_SIZE) + ((len%MIN_TRANSFER_SIZE)?1:0);
		total_len = numblocks * MIN_TRANSFER_SIZE;
		pad_buf = (A_UINT8 *)A_MALLOC(total_len * sizeof(A_UINT8));
		pad_len = (numblocks*MIN_TRANSFER_SIZE) - len;
		memcpy(pad_buf, buf, len);
#ifdef _DEBUG
		q_uiPrintf("osSockWrite::numblocks=%d:total_len=%d:pad_len=%d:actual len=%d\n", numblocks, total_len, pad_len, len);
#endif
				pSockInfo->sockfd = pSockInfo->outHandle;
                if ((err=write_device(pSockInfo, pad_buf, &total_len)) != 0) {
                        uiPrintf("ERROR::osSockWrite::USB port write failed with error = %x\n", err);
			A_FREE(pad_buf);
                        return 0;
                }
#ifdef _DEBUG
		q_uiPrintf("osSockWrite::total bytes written = %d:Padded len = %d:Actual len = %d\n", total_len, (numblocks * MIN_TRANSFER_SIZE), len);
#endif
		A_FREE(pad_buf);
		if (total_len == (numblocks * MIN_TRANSFER_SIZE))
	        	dwWritten = len;
		else 
			dwWritten = total_len;
            break;
            } 
    }// end of switch

    return dwWritten;
}

/**************************************************************************
* osSockClose - close socket
*
* Close the handle to the pipe
*
* RETURNS: 0 if error, non 0 if no error
*/
void
osSockClose(OS_SOCK_INFO* pOSSock)
{
	A_UINT32 err;

#ifdef _DEBUG
    q_uiPrintf("osSockClose::hostname=%s\n", pOSSock->hostname);
#endif

    switch(pOSSock->port_num) {
            case COM1_PORT_NUM:
            case COM2_PORT_NUM:
            case COM3_PORT_NUM: 
			case COM4_PORT_NUM: {
                if ((err=os_com_close(pOSSock)) != 0) {
                        uiPrintf("ERROR::osSockClose::Com port close failed with error = %x\n", err);
                        return;
                }
                break;
	            } // end of case
            case SOCK_PORT_NUM: {
	            if (inSignalHandler == TRUE) return;
                closesocket(pOSSock->sockfd);
	            A_FREE(pOSSock);
                break;
	        }
            case USB_PORT_NUM:{
             //   CloseHandle((HANDLE) pOSSock->sockfd);
                CloseHandle((HANDLE)pOSSock->inHandle);
                CloseHandle((HANDLE)pOSSock->outHandle);
                break;
            }
    }
    return;
}





OS_SOCK_INFO*
osSockConnect(char *pname)
{
    char		pname_lcl[256];
    char *		mach_name;
    char *		cp;
    OS_SOCK_INFO *pOSSock;
    int			res;
    A_UINT32 err;
    HANDLE handle;

    strncpy(pname_lcl, pname, sizeof(pname_lcl));
    pname_lcl[sizeof(pname_lcl) - 1] = '\0';
#ifdef _DEBUG
    q_uiPrintf("osSockConnect: pname_lcl = '%s'\n", pname_lcl);
#endif
    mach_name = pname_lcl;
	while (*mach_name == '\\') {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本成人在线看| 国产精品久久午夜夜伦鲁鲁| 99久久精品国产一区二区三区| 成人91在线观看| 欧美老肥妇做.爰bbww视频| ww久久中文字幕| 久久午夜老司机| 久久精品久久99精品久久| 一本色道久久综合亚洲91| 精品久久五月天| 亚洲综合精品自拍| 成人动漫一区二区| 国产精品国产自产拍高清av| 色偷偷一区二区三区| 色婷婷国产精品| 一区二区三区日韩欧美| 精品一区二区三区欧美| 欧美视频自拍偷拍| 中文字幕第一页久久| 免费高清在线视频一区·| 日本高清不卡在线观看| 欧美精品777| 精品中文字幕一区二区| 日本一区二区三区久久久久久久久不 | 日韩高清在线观看| 精品日韩成人av| 国产宾馆实践打屁股91| 日韩免费高清av| 亚洲va在线va天堂| 在线这里只有精品| 美日韩黄色大片| 欧美一区二区三区不卡| 亚洲成人动漫一区| 精品国产成人系列| 老色鬼精品视频在线观看播放| 日韩欧美二区三区| 91丨九色丨蝌蚪丨老版| 欧美激情在线看| 一本大道久久a久久精二百| 性欧美大战久久久久久久久| 日韩一区二区电影网| 日韩综合小视频| 欧美一区在线视频| 国产经典欧美精品| 国产精品少妇自拍| 波多野结衣在线aⅴ中文字幕不卡| 精品国产一区久久| 日本韩国欧美一区二区三区| 国产伦精品一区二区三区免费迷| 精品久久久久av影院| 日本韩国一区二区三区视频| 国产资源精品在线观看| 日本一区二区视频在线观看| 欧美日韩你懂得| 蜜桃91丨九色丨蝌蚪91桃色| 一色屋精品亚洲香蕉网站| 色国产综合视频| 国产91高潮流白浆在线麻豆| 日韩激情中文字幕| 国产精品污网站| 欧美精品一区二区高清在线观看| 97se亚洲国产综合在线| 国产精品香蕉一区二区三区| 精品久久久久久久久久久久包黑料| 欧美午夜精品久久久久久超碰| 福利视频网站一区二区三区| 九九精品一区二区| 天堂蜜桃91精品| 亚洲在线一区二区三区| 中文字幕一区二区三区视频| www国产精品av| 欧美三级日韩三级国产三级| 成人激情黄色小说| 国产激情91久久精品导航 | 亚洲综合色婷婷| 1024国产精品| 国产精品毛片久久久久久| 久久久精品日韩欧美| 99视频有精品| 国产99精品国产| 国内外精品视频| 精品综合久久久久久8888| 麻豆国产91在线播放| 五月婷婷另类国产| 久久综合久色欧美综合狠狠| 欧美一区二区精品在线| 6080日韩午夜伦伦午夜伦| 不卡一区二区在线| 成人97人人超碰人人99| 91免费看片在线观看| 91在线观看视频| 色综合天天综合网国产成人综合天| 蜜桃视频一区二区三区在线观看 | 国产精品久久久久影院色老大 | 一本色道久久综合精品竹菊| 99久久777色| 色8久久精品久久久久久蜜| 91亚洲男人天堂| 欧美日韩在线不卡| 日韩精品在线看片z| 日韩亚洲欧美综合| 精品va天堂亚洲国产| 亚洲国产精品99久久久久久久久| 最新久久zyz资源站| 亚洲电影一区二区| 中文字幕中文在线不卡住| 亚洲三级电影网站| 国产精品久久99| 亚洲一区二区三区四区在线免费观看| 亚洲成av人片www| 青青草成人在线观看| 国产xxx精品视频大全| 色综合久久久久综合体| 欧美高清你懂得| 2020国产成人综合网| 亚洲三级在线观看| 蜜臀av一区二区| 99久久精品情趣| 91精品婷婷国产综合久久性色| 久久久久久夜精品精品免费| 亚洲男人的天堂av| 亚洲女爱视频在线| 青青草原综合久久大伊人精品优势| 国内精品久久久久影院薰衣草 | 久久婷婷色综合| 成人免费毛片嘿嘿连载视频| 成人免费毛片高清视频| jvid福利写真一区二区三区| 91精品福利在线一区二区三区 | 国产真实乱对白精彩久久| 国产精品成人免费精品自在线观看| 亚洲国产日韩综合久久精品| 亚洲一区二区三区四区在线观看| 亚洲动漫第一页| 99re这里只有精品6| 91色视频在线| 欧美麻豆精品久久久久久| 欧美国产亚洲另类动漫| 亚洲免费高清视频在线| 亚洲国产wwwccc36天堂| 成人午夜视频网站| 在线精品视频免费播放| 精品国产乱码久久久久久久| 中文字幕一区二区三区在线不卡 | 欧美一区二区日韩一区二区| 精品久久人人做人人爰| 欧美变态凌虐bdsm| 午夜精品久久久久久久99水蜜桃| 青青草成人在线观看| 亚洲乱码国产乱码精品精98午夜| 亚洲精品水蜜桃| 日韩黄色一级片| 国产精品一区不卡| 精品久久久久一区| 中文字幕中文字幕一区| 日日摸夜夜添夜夜添亚洲女人| caoporn国产精品| 在线播放91灌醉迷j高跟美女| 欧美大尺度电影在线| 日韩午夜三级在线| 亚洲欧美一区二区三区国产精品| 日韩不卡手机在线v区| 久久精品一区二区三区av| 秋霞午夜av一区二区三区| 在线不卡欧美精品一区二区三区| 欧美一区日韩一区| 久久影院午夜片一区| 亚洲国产视频一区| 国产69精品久久久久777| 日韩欧美一区二区不卡| 亚洲婷婷综合色高清在线| 免费成人av在线播放| 91麻豆精品国产91久久久更新时间 | 亚洲一区视频在线观看视频| av成人老司机| 精品美女一区二区| 亚洲成人一区在线| 69堂成人精品免费视频| 中文字幕视频一区| 国产久卡久卡久卡久卡视频精品| 久久久久9999亚洲精品| 天堂资源在线中文精品| 99视频精品免费视频| 亚洲黄一区二区三区| 国产福利一区在线观看| 91丨九色丨尤物| 亚洲国产va精品久久久不卡综合| 久久成人羞羞网站| 国产精品影视在线| 中文无字幕一区二区三区 | 国产91精品免费| 中文字幕一区二区三区四区不卡| 久久99九九99精品| 色婷婷av一区二区三区之一色屋| 亚洲在线视频网站| 色呦呦网站一区| 精品国产露脸精彩对白 | 日韩激情中文字幕| 欧美网站大全在线观看| 久久精品久久综合|