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

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

?? usblibrary.cpp

?? AT91SAM7S64 / IAR EWARM 431A Examples
?? CPP
字號:
// USBLibrairie.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "USBLibrary.h"
#include <stdio.h>
#include <stdlib.h>


#include "GUID829.h"
LPGUID pGuid = (LPGUID) &GUID_CLASS_I82930_BULK;


//*----------------------------------------------------------------------------
//* \fn    DllMain
//* \brief 
//*----------------------------------------------------------------------------
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}

//*----------------------------------------------------------------------------
//* \fn    CFCPipeUSB::CFCPipeUSB
//* \brief CFCPipeUSB class constructor
//*----------------------------------------------------------------------------
CFCPipeUSB::CFCPipeUSB()
{
  m_hPipeIn = INVALID_HANDLE_VALUE;
  m_hPipeOut = INVALID_HANDLE_VALUE;
}

//*----------------------------------------------------------------------------
//* \fn    CFCPipeUSB::Open
//* \brief Open handel to device
//*----------------------------------------------------------------------------
short CFCPipeUSB::Open(char* sDeviceName)
{
  char sPipeNameIn[MAX_PATH];
  char sPipeNameOut[MAX_PATH];

  ::strcpy(sPipeNameIn, sDeviceName);
  ::strcat(sPipeNameIn, "\\PIPE01");

  ::strcpy(sPipeNameOut, sDeviceName);
  ::strcat(sPipeNameOut, "\\PIPE00");

  m_hPipeIn = ::CreateFile(sPipeNameIn, 
                           GENERIC_READ | GENERIC_WRITE,
                           FILE_SHARE_READ,
						   NULL,
						   OPEN_EXISTING, 
                           0, 
						   NULL);

  m_hPipeOut = ::CreateFile(sPipeNameOut, 
                            GENERIC_WRITE,
                            FILE_SHARE_WRITE,
							NULL,
							OPEN_EXISTING, 
                            0,
							NULL);


  if(    (m_hPipeIn == INVALID_HANDLE_VALUE)
      || (m_hPipeOut == INVALID_HANDLE_VALUE))
  {
    Close();
	int i =GetLastError();
    return i;
  }

  return FC_OK;
}

//*----------------------------------------------------------------------------
//* \fn    CFCPipeUSB::Close
//* \brief Close handel
//*----------------------------------------------------------------------------
short CFCPipeUSB::Close()
{
  if(m_hPipeIn != INVALID_HANDLE_VALUE)
    ::CloseHandle(m_hPipeIn);
  if(m_hPipeOut != INVALID_HANDLE_VALUE)
    ::CloseHandle(m_hPipeOut);

  m_hPipeIn = INVALID_HANDLE_VALUE;
  m_hPipeOut = INVALID_HANDLE_VALUE;;

  return FC_OK;
}

//*----------------------------------------------------------------------------
//* \fn    CFCPipeUSB::ReadPipe
//* \brief Read data
//*----------------------------------------------------------------------------
short CFCPipeUSB::ReadPipe(LPVOID pBuffer, ULONG ulBufferSize)
{
  int timeout = 5;
  if(m_hPipeIn == INVALID_HANDLE_VALUE)
    return FC_ERROR;

  if(!pBuffer || !ulBufferSize)
    return FC_NOT_INITIALIZED;

  ULONG dwBytesRead;
  ULONG dwBytesToRead = ulBufferSize;

  do
  {
    if( ! ::ReadFile(m_hPipeIn, pBuffer, dwBytesToRead, &dwBytesRead, NULL)) {
      DWORD dwErr = ::GetLastError();
      return FC_DRIVER_ERROR;
    }
	pBuffer =  (char *) pBuffer + dwBytesRead;
    dwBytesToRead -= dwBytesRead;
  } while(dwBytesToRead && (--timeout));

  
	if ((!timeout) || dwBytesToRead)
		return FC_DRIVER_ERROR;

  return FC_OK;
}

//*----------------------------------------------------------------------------
//* \fn    CFCPipeUSB::WritePipe
//* \brief Write data
//*----------------------------------------------------------------------------
short CFCPipeUSB::WritePipe(LPVOID pBuffer, ULONG ulBufferSize, ULONG *pBytesWritten)
{
  if(m_hPipeOut == INVALID_HANDLE_VALUE)
    return FC_ERROR;

  if(!pBuffer)
    return FC_NOT_INITIALIZED;

 
  if(! ::WriteFile(m_hPipeOut, pBuffer, ulBufferSize, pBytesWritten, NULL))
  {
    DWORD dwErr = ::GetLastError();
    return FC_DRIVER_ERROR;
  }

  return FC_OK;
}

//*----------------------------------------------------------------------------
//* \fn    GetDeviceName
//* \brief 
//*----------------------------------------------------------------------------
BOOL GetDeviceName (HDEVINFO HardwareDeviceInfo,
                                  PSP_INTERFACE_DEVICE_DATA DeviceInfoData,
                                  char **pDevName)
{
  PSP_INTERFACE_DEVICE_DETAIL_DATA functionClassDeviceData = NULL;
  ULONG                            predictedLength = 0;
  ULONG                            requiredLength = 0;

  HANDLE hOut = INVALID_HANDLE_VALUE;

  //
  // allocate a function class device data structure to receive the
  // goods about this particular device.
  //
  SetupDiGetInterfaceDeviceDetail(HardwareDeviceInfo,
                                  DeviceInfoData,
                                  NULL,  // probing so no output buffer yet
                                  0,     // probing so output buffer length of zero
                                  &requiredLength,
                                  NULL); // not interested in the specific dev-node

  predictedLength = requiredLength;

  functionClassDeviceData = (PSP_INTERFACE_DEVICE_DETAIL_DATA) malloc (predictedLength);
  functionClassDeviceData->cbSize = sizeof (SP_INTERFACE_DEVICE_DETAIL_DATA);

  //
  // Retrieve the information from Plug and Play.
  //
  if (! SetupDiGetInterfaceDeviceDetail(HardwareDeviceInfo,
                                        DeviceInfoData,
                                        functionClassDeviceData,
                                        predictedLength,
                                        &requiredLength,
                                        NULL))
  {
    free(functionClassDeviceData);
    return FALSE;
  }

  *pDevName = strdup(functionClassDeviceData->DevicePath) ;

  free(functionClassDeviceData);
	
  return TRUE;
}

//*----------------------------------------------------------------------------
//* \fn    GetUsbDeviceListName
//* \brief Make list of device Name connected for current GUID
//*----------------------------------------------------------------------------
USBLIBRARY_API int GetUsbDeviceListName(char** pDeviceList[])
{

  ULONG                    NumberDevices;
  HDEVINFO                 hardwareDeviceInfo;
  SP_INTERFACE_DEVICE_DATA deviceInfoData;
   
   // Open a handle to the plug and play dev node.
  // SetupDiGetClassDevs() returns a device information set that contains info on all
  // installed devices of a specified class.
  //
  hardwareDeviceInfo = SetupDiGetClassDevs (
                         pGuid,
                         NULL,            // Define no enumerator (global)
                         NULL,            // Define no
                         (DIGCF_PRESENT | // Only Devices present
                         DIGCF_INTERFACEDEVICE)); // Function class devices.
  NumberDevices = 0;
   deviceInfoData.cbSize = sizeof(SP_INTERFACE_DEVICE_DATA);
  *pDeviceList = (char **) malloc (sizeof(char *) * 128);

  do 
  {
      

      // SetupDiEnumDeviceInterfaces() returns information about device interfaces
      // exposed by one or more devices. Each call returns information about one interface;
      // the routine can be called repeatedly to get information about several interfaces
      // exposed by one or more devices.
      if(SetupDiEnumDeviceInterfaces (hardwareDeviceInfo,
                                      0, // We don't care about specific PDOs
                                      pGuid,
                                      NumberDevices,
                                      &deviceInfoData)) {
		GetDeviceName(hardwareDeviceInfo,&deviceInfoData,&((*pDeviceList)[NumberDevices++]));
      } 
   } while (ERROR_NO_MORE_ITEMS != GetLastError()) ;



  // SetupDiDestroyDeviceInfoList() destroys a device information set
  // and frees all associated memory.
  SetupDiDestroyDeviceInfoList(hardwareDeviceInfo);

  return NumberDevices;

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本大香伊一区二区三区| 亚洲精品一区二区三区精华液| 国产视频亚洲色图| 欧美一区二区大片| 91亚洲国产成人精品一区二区三| 亚洲二区在线视频| 99免费精品在线观看| 亚洲成人久久影院| 最新中文字幕一区二区三区| 国产91丝袜在线18| 日韩精彩视频在线观看| 国产免费观看久久| 视频一区二区三区中文字幕| 亚洲精品日韩专区silk| 91精品国产91久久综合桃花| 国v精品久久久网| 亚洲综合清纯丝袜自拍| 在线观看欧美精品| 久久蜜桃av一区二区天堂 | 色www精品视频在线观看| 天天射综合影视| 麻豆国产精品一区二区三区| 天堂在线一区二区| 蜜臀国产一区二区三区在线播放| 午夜精品久久久久久久| 日本欧美加勒比视频| 国产一区亚洲一区| 捆绑调教一区二区三区| 国内精品国产成人国产三级粉色| 国产视频一区在线播放| 国产精品欧美综合在线| 亚洲黄色免费网站| 亚洲视频资源在线| 日韩精品成人一区二区在线| 极品美女销魂一区二区三区免费| 亚洲一区二区三区小说| 亚洲素人一区二区| 蜜臀av性久久久久蜜臀av麻豆| 麻豆国产91在线播放| 久久9热精品视频| 日本韩国欧美一区| 欧美精品免费视频| 国产精品福利一区| 日本高清无吗v一区| 综合激情网...| 亚洲国产成人午夜在线一区| 国产女主播在线一区二区| 精品欧美一区二区久久| 欧美精品一区二区在线观看| 伊人婷婷欧美激情| 国内精品嫩模私拍在线| 精品视频123区在线观看| 成人短视频下载| 久久精品国产精品亚洲红杏| 成人深夜在线观看| 欧美一卡2卡三卡4卡5免费| 91麻豆精品国产91久久久更新时间| 国产精品亚洲第一| 国产美女一区二区三区| av成人老司机| 91麻豆国产自产在线观看| 欧美精品在线一区二区三区| 久久久久久久网| 国产精品18久久久久久vr| 色婷婷精品大在线视频| 国产精品人妖ts系列视频| 天堂在线亚洲视频| 欧美肥妇free| 亚洲成av人片一区二区三区| 欧美图片一区二区三区| 亚洲人成影院在线观看| av不卡一区二区三区| 1000部国产精品成人观看| 色婷婷久久99综合精品jk白丝| 国产婷婷色一区二区三区四区 | 国模套图日韩精品一区二区| 欧美不卡123| 成人黄色av电影| 亚洲免费观看高清在线观看| 一本大道久久a久久精二百| 婷婷中文字幕综合| 精品少妇一区二区三区在线视频| 九色porny丨国产精品| 国产精品嫩草影院av蜜臀| 91网址在线看| 麻豆精品精品国产自在97香蕉| 国产亚洲视频系列| 欧美日韩三级一区| 风间由美一区二区av101| 亚洲成av人片| 国产精品国产三级国产aⅴ入口| 91福利国产精品| 国产美女在线观看一区| 一区二区三区欧美亚洲| 欧美精品一区二区三区蜜桃视频 | 99国产精品久久久久| 肉肉av福利一精品导航| 国产日韩三级在线| 制服.丝袜.亚洲.另类.中文| 不卡的看片网站| 国产一区二区不卡在线| 日韩黄色片在线观看| 亚洲三级视频在线观看| 91精品啪在线观看国产60岁| 成人av网站在线观看免费| 麻豆精品一区二区av白丝在线| 亚洲人一二三区| 亚洲欧美另类久久久精品| 精品国产免费视频| 欧美不卡在线视频| 日韩视频在线永久播放| 91精品国产综合久久精品图片| 欧美性xxxxx极品少妇| 在线免费亚洲电影| 91免费国产在线观看| 97se亚洲国产综合自在线| 91视视频在线直接观看在线看网页在线看| 午夜不卡av在线| 午夜视频一区在线观看| 婷婷中文字幕一区三区| 久久精品国产99| 国产.欧美.日韩| 色综合久久久网| 亚洲欧美日韩国产成人精品影院| 色欧美日韩亚洲| 欧美性色欧美a在线播放| 欧美在线观看一二区| 91精品国产综合久久久久久| 精品久久国产字幕高潮| 日韩欧美国产小视频| 国产精品天天看| 中文字幕高清一区| 国产精品女同一区二区三区| 国产精品婷婷午夜在线观看| 18成人在线观看| 亚洲国产一区二区三区青草影视| 亚洲h精品动漫在线观看| 日韩av高清在线观看| 国产精品资源站在线| 成人免费高清在线| 91黄色小视频| 日韩三级av在线播放| 国产网站一区二区三区| 国产iv一区二区三区| 欧美欧美欧美欧美首页| 国产人成一区二区三区影院| 亚洲va欧美va人人爽午夜| 成人免费av资源| 成人av影院在线| 天天av天天翘天天综合网| 美日韩一级片在线观看| 99热这里都是精品| 欧美成人伊人久久综合网| 中文字幕日韩一区二区| 美女在线观看视频一区二区| 91麻豆国产精品久久| 久久久久久久久久久黄色| 一区二区三区美女视频| 成人免费观看av| 精品国产一区二区三区av性色| 一区二区三区免费在线观看| 国产成人综合视频| 欧美日韩美少妇| 精品国产自在久精品国产| 亚洲最大成人网4388xx| 97国产一区二区| 中文字幕日韩av资源站| 久久99精品国产麻豆不卡| 国产欧美1区2区3区| 亚洲成人av免费| 欧美日韩中文一区| 亚洲一卡二卡三卡四卡 | 一区二区三区不卡视频在线观看| 五月综合激情网| 日韩欧美国产精品| 奇米影视一区二区三区小说| 欧美色精品天天在线观看视频| 亚洲最新视频在线观看| 欧美日韩不卡视频| 亚洲精品午夜久久久| 欧美理论片在线| 午夜不卡在线视频| 欧美一级高清片在线观看| 国产成人免费视频一区| 国产精品久久久久久久久免费相片| 北条麻妃一区二区三区| 日韩毛片高清在线播放| 欧美三级中文字幕在线观看| thepron国产精品| 久久久综合激的五月天| 国产精品亚洲午夜一区二区三区| 69久久夜色精品国产69蝌蚪网| 久久99国产精品免费网站| 国产欧美日本一区视频| 色系网站成人免费| 狠狠色综合播放一区二区| 91精品国产综合久久精品app| 日韩精品电影在线| 亚洲欧洲精品一区二区精品久久久| 欧美日韩国产首页|