亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产自产高清不卡| 18涩涩午夜精品.www| 国产精品私人自拍| 一区二区三区在线播| 日韩精品成人一区二区三区| 久久69国产一区二区蜜臀| 国产成人精品午夜视频免费| 欧美中文一区二区三区| 欧美大胆一级视频| 亚洲色图在线看| 蜜桃视频在线观看一区| heyzo一本久久综合| 日韩一级完整毛片| 国产精品免费aⅴ片在线观看| 亚洲国产你懂的| 国产高清不卡二三区| 欧美日韩在线精品一区二区三区激情| 欧美mv和日韩mv国产网站| 亚洲色图清纯唯美| 久久99久国产精品黄毛片色诱| 99在线精品一区二区三区| 欧美一级理论片| 亚洲精品免费看| 国产精品88av| 欧美一区二区三区四区五区| 国产精品美女视频| 美女视频免费一区| 欧美日韩五月天| 国产精品久久三| 久久99精品久久久| 色狠狠av一区二区三区| 中文字幕精品综合| 另类小说色综合网站| 在线观看欧美日本| 中文字幕中文在线不卡住| 久久国产尿小便嘘嘘| 欧美三级中文字| 1024国产精品| 国产精品91xxx| 精品精品国产高清a毛片牛牛| 一级日本不卡的影视| 成人国产视频在线观看| 久久综合九色综合97婷婷| 五月婷婷激情综合网| 91久久香蕉国产日韩欧美9色| 国产欧美日韩另类一区| 激情图片小说一区| 日韩三级视频在线观看| 亚洲一区二区三区视频在线| 成人不卡免费av| 久久久亚洲午夜电影| 久久福利视频一区二区| 欧美精品一卡两卡| 午夜欧美电影在线观看| 欧美综合在线视频| 亚洲卡通欧美制服中文| 成人免费黄色在线| 国产午夜亚洲精品不卡| 激情文学综合网| 日韩精品一区二区三区三区免费| 日韩av电影免费观看高清完整版 | 精品欧美久久久| 日本女人一区二区三区| 欧美色图第一页| 亚洲 欧美综合在线网络| 欧美日韩一区二区不卡| 亚洲网友自拍偷拍| 欧美亚洲综合色| 亚洲在线免费播放| 欧美三区免费完整视频在线观看| 亚洲国产成人av| 欧美三级乱人伦电影| 午夜电影久久久| 3atv一区二区三区| 蜜桃视频在线一区| 精品乱人伦小说| 国产一区二区精品在线观看| 久久久影院官网| 不卡影院免费观看| 亚洲日本丝袜连裤袜办公室| 色呦呦国产精品| 亚洲成人av电影在线| 91精品国产综合久久久蜜臀粉嫩 | 日韩写真欧美这视频| 日本不卡1234视频| xfplay精品久久| 国产a区久久久| 亚洲免费在线看| 欧美日韩大陆一区二区| 美日韩黄色大片| 国产色一区二区| 91网上在线视频| 亚洲成a人片综合在线| 日韩无一区二区| 国产老肥熟一区二区三区| 椎名由奈av一区二区三区| 国产高清成人在线| 国产精品久久久久aaaa| 色系网站成人免费| 午夜精品123| 日韩欧美电影一二三| 国产精品羞羞答答xxdd| 国产精品久久久99| 欧美日韩国产高清一区| 国内外精品视频| 中文字幕视频一区| 欧美日韩成人综合在线一区二区| 久久精品久久精品| 中文字幕一区在线观看| 欧美日韩一区二区三区在线看| 免费观看在线综合色| 国产精品三级电影| 精品污污网站免费看| 国产乱人伦偷精品视频不卡 | 国产成人精品免费在线| 夜夜精品视频一区二区| 欧美成人综合网站| 97aⅴ精品视频一二三区| 日韩国产高清影视| 国产精品剧情在线亚洲| 欧美日韩国产精选| 成人免费观看男女羞羞视频| 午夜精品影院在线观看| 久久久综合视频| 欧美日韩久久久| av中文字幕亚洲| 麻豆91在线播放免费| 亚洲男人的天堂在线aⅴ视频| 欧美v国产在线一区二区三区| 91麻豆国产自产在线观看| 久久99热99| 亚洲一区二区三区中文字幕| 国产亚洲午夜高清国产拍精品| 欧美综合在线视频| 粉嫩高潮美女一区二区三区| 日本欧美在线观看| 亚洲男女一区二区三区| 久久久五月婷婷| 91精品蜜臀在线一区尤物| 一本久久a久久精品亚洲| 国产一区二区导航在线播放| 亚洲gay无套男同| 成人欧美一区二区三区白人| 日韩精品专区在线影院观看 | 日韩精品电影一区亚洲| 亚洲特黄一级片| 久久人人97超碰com| 欧美精品免费视频| 欧洲激情一区二区| 本田岬高潮一区二区三区| 国产一区二区三区不卡在线观看| 亚洲高清久久久| 中文字幕五月欧美| 国产日韩成人精品| 日韩精品在线看片z| 欧美日韩国产综合一区二区 | 亚洲伦理在线免费看| 欧美国产在线观看| 2021久久国产精品不只是精品| 这里是久久伊人| 欧美日韩视频在线第一区| 色综合久久久久网| 91丨九色丨国产丨porny| 国产成人av一区二区三区在线观看| 美女视频网站久久| 热久久久久久久| 日韩精品午夜视频| 五月激情综合色| 五月天欧美精品| 三级欧美韩日大片在线看| 亚洲国产精品久久久久婷婷884 | 色婷婷久久久亚洲一区二区三区| 成人综合在线视频| 国产成人午夜精品影院观看视频 | 国产精品久久久久一区二区三区共 | 中文字幕一区在线观看| 国产精品久久久久久久久久免费看| 久久人人超碰精品| 国产午夜精品一区二区三区视频 | 成人免费毛片app| 成人激情图片网| 成人国产精品免费观看| av一区二区三区| 99久久99久久精品免费观看 | 一区二区三区久久久| 亚洲制服丝袜在线| 亚洲成人手机在线| 婷婷中文字幕一区三区| 日韩电影一区二区三区四区| 亚洲超碰精品一区二区| 日韩中文欧美在线| 蜜臀av性久久久久蜜臀aⅴ| 久久99日本精品| 国产999精品久久久久久| 成人h精品动漫一区二区三区| a4yy欧美一区二区三区| 色哟哟欧美精品| 91.com在线观看| 精品久久久久久久久久久久久久久| 精品国产乱码久久久久久夜甘婷婷|