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

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

?? dnw.cpp.bak

?? 三星2440-2410 ARM 的Uboot下載上位機源代碼
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
#define STRICT
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <tchar.h>
#include <string.h>
#include <process.h>
#include <stdlib.h>

#include "resource.h"

#include "def.h"
#include "dnw.h"
#include "engine.h"
#include "fileopen.h"
#include "d_box.h"
#include "usbtxrx.h"

//NOTE: _beginthread() 
// To use _beginenthread(),Activate "Project/Settings/C/C++/Categry/Code generation/
// Use Run-Time library/Multithreaded or Debug Multithreaded"

// If DDK2000 is used,
// 1. Project_Settings/CC++/Preprocessor/Additional_include_directories = C:\NTDDK\inc
// 2. Project_Settings/Link/Input/Additional_library_path=c:\NTDDK\libfre\i386

// If DDKXP is used,
// 1. Project_Settings/CC++/Preprocessor/Additional include directories = C:\WINDDK\2600\inc\w2k
// 2-1. Project_Settings/Link/Input/Additional_library_path=C:\WINDDK\2600\lib\w2k\i386
//      This causes some warning about '.rdata' section attribute.
// 2-2. Project_Settings/Link/Input/Additional_library_path==C:\WINDDK\2600\lib\i386\free
//      There's no warning.

/*
===================== REVISON HISTORY =====================
1. 2000. 3.30: V0.01 
  First release of DNW
2. 2000.10.11: V0.2
  The edit control is used for scroll, copy&paste, smooth screen update
3. 2001.1.26: V0.3
  a) The CPU usage will be less. Sleep() is inserted during TX.
  b) The filesize and checksum are transmitted together with bin file.
  c) WriteCommBlock() bug is fixed. The txEmpty flag should be changed in only DoRxTx().
4. 2001.2.24: V0.31
  a) The size of edit buffer is changed by EM_LIMITTEXT message.
     EDIT_BUF_SIZE(30000) -> MAX_EDIT_BUF_SIZE(65000)
  b) If the edit box is greater than 50000,
     the size of edit box is reduced by 10000.
  c) The horizontal scroll bar is removed for better look. 
  d) In WaitCommEvent() loop, 
     the following condition is inserted to clear the overrun condition.
    	if((dwEvtMask & EV_ERR){...}
  e) EB_Printf() have some error to process large string data.
5. 2001.3.8: V0.32
  a) EDIT_BUF_SIZE is reduced 25000 because the EM_REPLACESEL message is done very slowly
     if the size is over about 30000.
6. 2001.4.11: V0.32A
  a) Experimentally, MAX_EDIT_BUF_SIZE is set to the default value(32767). 
     //SendMessage(_hwndEdit, EM_SETLIMITTEXT, MAX_EDIT_BUF_SIZE, 0L);
     RESULT: MAX_EDIT_BUF_SIZE doesn't affect the display delay problem.
             I think that the new method for deleting the contents should be applied
	     Let's do tonight
7. 2001.5.14: V0.34
   a) I have known that the edit control isn't adequate for console program.
      So, I would give up the development of DNW using the edit control
      The last decision is as follows;
      MAX_EDIT_BUF_SIZE (65000) //up to 65535
      EDIT_BUF_SIZE (30000)   
      EDIT_BUF_DEC_SIZE (10000)
   b) If the selected text is deleted, the edit control displays the first of the text.
      In this case, to show the end of the text, dummy REPLACE_SEL is added.

8. 2001.11.23: V0.4
   a) USB download function is added.
   b) GetOverlappedResult() is used in TxFile() in order to save the cpu time more efficiently 
   c) Serial Configuration dialog box
   d) In secbulk.sys is changed to support IRP_MN_QUERY_CAPABILITIES.
      So, the surpriseRemoval is allowed. When the USB is yanked impolitely, 
      the warning dialog box won't appear in WIN2000.

9. 2001.11.24: v0.41alpha
   a) WriteFile() supports overlapped I/O to check broken pipe.
   b) progress bar is added for transmit operation.
   c) USB,serial status is printed on the window title bar
   
10. 2001.12.5: v0.42a
   a) In secbulk.sys, the maximum number of bulk packit in 1ms frame duration is changed to 16 from 4.
      So, transfer rate is increased from 220KB/S to 405KB/S 
   b) Although the fileopen was failed(or canceled), the transmit wasn't canceled. This is fixed.      
   c) When the options menu is selected, a serial port will be reconnected.
   d) The receive test menu is added. 

11. 2001.12.6: v0.43
   a) Fou USB tx operation, TX_SIZE is increased from 2KB to 16KB.
      So, transfer rate is increased from 405KB/S to 490KB/S.
      (2KB:405KB/S 4KB:450KB/S  8KB:470KB/S 16KB:490KB/S)

12. 2001.12.7: v0.44b
   a) Although a serial port is not connected, the serial port is connected 
      after Configuration/Options menu -> fixed.
   b) The name dnw.cfg for v 0.4x is changed to dnw.ini 
      in order not to confuse old dnw.cfg for ver 0.3x
      
12. 2002.01.2: v0.44c
   a) The edit box size is changed to display 80x25 characters 
      
13. 2002.02.22: v0.45
   a) In windows95, DNW doesn't search USB stack.
   b) When download, there should be a cancel button
   c) Sometimes, the progress bar is not filled although download is doing.
      I think it's because InitDownloadProgress() is executed 
      before than DownloadProgressProc().
      So, I inserted the code to wait until DownloadProgressProc() is executed as follows;
	  while(_hDlgDownloadProgress==0); //wait until the progress dialog box is ready.
   d) secbulk is optimized 
14. 2002.04.01: v0.46
   a) If DNW is start to transmit although the b/d is not ready, DNW will be hung.
      It's only solution to turn off and on the b/d.
      To solve this problem smoothly, the overlapped I/O will be used for USB transfer. 
      But, secbulk.sys may not support overlapped I/O. 
      Although I implemented the overlapped I/O, WriteFile() function didn't return before its completion.
   b) Because the overlapped I/O doens't work as my wish,
      and in order to quit the dnw.exe hung, modaless dialogue box is used for the progress bar.
   c) *.nb0

  15. 2002.04.10: v0.47
   a) I reduce the edit box size as follows;  
	#define MAX_EDIT_BUF_SIZE (0x7FFE) 
	#define EDIT_BUF_SIZE (0x6000)   
	#define EDIT_BUF_DEC_SIZE (0x1000)
      There is no good cause about why I change. I want to just reduce the edit box size.
   b) Sometimes, when transmit, there is no transmit although the transmit progrss dialog box is shown.
      I think that it's because the _enthread() fails.
      To debug this problem, the _enthread result is checked.

  16. 2002.04.19: v0.48
   a) The bug of WIN2K WINAPI is found. ->It's not fixed perfectly.
      Please let me know of the solution to avoid the memory problem of SetWindowText() API.

      The SetWindowText()(also,WM_SETTEXT message) consumes 4KB system memory every times.
      I think there is some bug in SetWindowText API.
      In my case, because SetWindowText() is called every 1 seconds, 
      the system memory used by DNW.exe is increased by 4KB every 1 seconds.
      For emergency fix, SetWindowText() will be called only when its content is changed.
      
      NOTE. This memory problem is not memory leakage problem 
            because the memory is flushed when the window is shrinked.

  17. 2002.05.03:v0.49
   a) Sometimes, when transmit, there is no transmit although the transmit progrss dialog box is shown.
      I have found the cause.
      It's because _hDlgDownloadProgress.
      If the TxFile thread is executed first than WM_INITDIALOG message,
      while(_hDlgDownloadProgress==NULL); will not exited because _hDlgDownloadProgress 
      in CPU register will be checked. So, the volatile should have been used 
      because _hDlgDownloadProgress value is changed in another thread.
      The solution is as follows;
      volatile HWND _hDlgDownloadProgress=NULL;
   b) Sometimes, the CPU usage will be always 100% if dnw.exe is being executed.
      This is because of the just above problem.
      If the problem 17-a) is occurred, the TxFile will be an obsolete thread.
      while(_hDlgDownloadProgress==NULL); will use the CPU at 100%.
      I think that this problem may be cleared because the problem 17-a) is cleared.
   c) The small icon,DNW is displayed in the window shell task bar and the window title.

  18. 2003.04.25:v0.50
   a) In case that a USB2Serial cable is used when COMPAQ Presario 1700, 
      a few last character display is postponed until the next group is received.
      -> MSDN recommends the while() for read operation, which has solved the problem.
   b) In DoRxTx(), the EV_ERR is added to SetCommMask(); -> which is more correct, I think.
   c) For overlapped WaitCommEvent,ReadFile,WriteFile, the return value should be checked.
      For ReadFile,WriteFile cases, the operation has no change.
      In previous version(V0.49), WaitCommEvent(,,NULL) should have not been used because OVERLAPPED I/O was being used.
      The combination of WaitCommEvent(,,&os) and GetOverlappedResult() will fix this problem.
   d) During developing the DNW v0.50, I had experienced some blue screen without any USB connection when I reset the SMDK2410.
      This problem was occurred when WaitCommEvent(,,&os) without GetOverlappedResult().
      This problem was not revived when is WaitCommEvent(,,NULL) although it's not correct. 
      
      From this phenomenon, I assume that the blue-screen, which is caused sometimes when resetting the SMDK2410, 
      may be caused by the mis-use of WaitCommEvent(,,NULL).

      But, it's still truth that the abnormal USBD response may cause the windows blue-screen
      ,which I experienced many times during my secbulk.sys development.
   
   19. 2003.04.29:v0.50A
   a) If the break condition is detected, "[DBG:EV_ERR]" message is displayed.
      So, the display of "[DBG:EV_ERR]" is removed.
*/

/*   
Items to be enhanced.
   - avoid SetWindowText() API problem.
   - remove debug stuff in following functions.
         void InitDownloadProgress(void);   
	 void DisplayDownloadProgress(int percent);
   - make status bar.
   - malloc() uses too much memory for large file transfer.
   - Enlarge the scroll buffer -> the edit box is not adequate.
   - file logging function
   - Ctrl+C should be work as copy function.
*/ 

/*
Edit Box Note:
- Check if the edit box is scrolled to show the text being deleted
  when the selected text is deleted in Win2000. In windows98, It's scrolled to show the deleted portion unfortunately.
*/

#define IS_OVERLAPPED_IO    (TRUE)

int userBaudRate,idBaudRate;
int userComPort;

#define MAX_BLOCK_SIZE (4096)

HANDLE idComDev;
OVERLAPPED osWrite,osRead;
volatile int isConnected=FALSE;
TCHAR rxBuf[MAX_BLOCK_SIZE+1];
volatile char *txBuf;
volatile DWORD iTxBuf;
DWORD txBufSize;

volatile int txEmpty=TRUE;



void MenuAbout(HWND hwnd)
{
    MessageBox(hwnd,TEXT("Serial Console with Serial/USB Download\n\n")
		    TEXT("1. e-mail: purnnamu@sec.samsung.com\n")
	  	    TEXT("2. USB Tx format: addr(4)+size(4)+data(n)+cs(2)   \n")
		    TEXT("3. Serial Tx format: size(4)+data(n)+cs(2)\n"),
	   	    TEXT("About ")APPNAME,MB_OK | MB_ICONINFORMATION );
}





void Quit(HWND hwnd)
{
    CloseComPort();
}



void MenuConnect(HWND hwnd)
{
    if(isConnected==TRUE)
    {
	CloseComPort();
    }

    OpenComPort(userComPort);
}



void UpdateWindowTitle(void)
{
    TCHAR title[256];
    TCHAR tch[16];
    
    static int prevComPort=0xff;
    static int prevBaudRate=0xff;
    static int prevUsbAlive=0xff;
    static int prevIsConnected=0xff;
    int usbAlive;

    lstrcpy(title,APPNAME);
    lstrcat(title,TEXT("   [COM"));

    if(isConnected==TRUE) //serial O.K.
    {
	tch[0]='0'+userComPort;
	tch[1]='\0';
	lstrcat(title,tch);
	lstrcat(title,TEXT(","));
	lstrcat(title,_itot(userBaudRate,tch,10) );   //_itot :TCHAR version of itoa 
	lstrcat(title,TEXT("bps]"));
    }
    else
    {
	lstrcat(title,TEXT(":x]"));
    }

    
    if(IsUsbConnected())
    {
	lstrcat(title,TEXT("[USB:OK]"));
	usbAlive=1;
    }
    else
    {
	lstrcat(title,TEXT("[USB:x]"));
	usbAlive=0;
    }

    //The bug of WIN2K WINAPI is found.
    //The SetWindowText()(also,WM_SETTEXT message) consumes 4KB system memory every times.
    //I think there is some bug in SetWindowText API.
    //In my case, because SetWindowText() is called every 1 seconds, 
    //the system memory used by DNW.exe is increased by 4KB every 1 seconds.
    //For emergency fix, SetWindowText will called only when its content is changed.
    //NOTE. This memory leakage is flushed when window is shrinked.

    if(userComPort!=prevComPort || userBaudRate!=prevBaudRate || usbAlive!=prevUsbAlive ||
       isConnected!=prevIsConnected )
    {
	SetWindowText(_hwnd,title);
    }
    prevComPort=userComPort;
    prevBaudRate=userBaudRate;
    prevUsbAlive=usbAlive;
    prevIsConnected=isConnected;
}



void MenuTransmit(HWND hwnd)
{
    HANDLE hFile;
    DWORD fileSize;
    unsigned short cs=0;
    DWORD i;
    BOOL result;
    unsigned long threadResult;

    if(!isConnected)
    {
	EB_Printf(TEXT("[ERROR:Not Connected]\n"));
	return;
    }
    result=PopFileOpenDlg(hwnd,szFileName,szTitleName);
    
    if(result==0) //file open fail
    {
	return;
    }

    hFile=CreateFile(szFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);

    if(hFile==INVALID_HANDLE_VALUE)
    {
	EB_Printf(TEXT("[ERROR:File Open]\n") );
	return;
    }
    
    fileSize=GetFileSize(hFile,NULL);

    txBuf=(char *)malloc(fileSize+6);
    if(txBuf==0)
    {
	EB_Printf(TEXT("[ERROR:Memory Allocation Fail:(%d)]\n"),fileSize+6 );
	return;
    }

    ReadFile(hFile,(void *)(txBuf+4),fileSize,&txBufSize,NULL);
    if(txBufSize!=fileSize)    
    {
    	EB_Printf(TEXT("[ERROR:File Size Error]\n") );
	return;
    }

    *((DWORD *)txBuf)=fileSize+6;   //attach filesize(n+6) 

    for(i=4;i<(fileSize+4);i++)
	cs+=(BYTE)(txBuf[i]);
    *((WORD *)(txBuf+4+fileSize))=cs;   //attach checksum 
    
    txBufSize+=6;
    iTxBuf=0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91尤物视频在线观看| av一本久道久久综合久久鬼色| 成人高清视频在线观看| 777久久久精品| 亚洲天堂av老司机| 国产一区91精品张津瑜| 欧美日韩国产高清一区二区| 国产精品看片你懂得| 久久99在线观看| 欧美日韩视频在线第一区 | 成人av在线播放网址| 日韩写真欧美这视频| 亚洲午夜日本在线观看| 99久久久精品| 日本一区二区三区在线不卡| 秋霞电影网一区二区| 欧美日韩视频在线第一区| 亚洲欧美日本韩国| 福利一区二区在线观看| 精品理论电影在线| 日韩制服丝袜av| 欧美午夜精品理论片a级按摩| 亚洲欧洲三级电影| 波多野结衣在线一区| 久久久久久久久99精品| 精品亚洲成a人| 日韩视频免费直播| 日本女优在线视频一区二区| 欧美色综合久久| 亚洲精品视频在线观看网站| av在线播放成人| 亚洲欧洲三级电影| 91亚洲国产成人精品一区二三| 国产精品免费网站在线观看| 成人午夜视频在线观看| 国产精品午夜春色av| 成人激情黄色小说| 国产精品日韩成人| 99在线视频精品| 中文字幕一区二区三区在线观看| 成人伦理片在线| 中文字幕一区二区三区四区不卡| 成人av在线网站| 亚洲天堂免费看| 欧洲色大大久久| 亚洲va国产va欧美va观看| 欧美日韩免费一区二区三区视频| 亚洲二区在线视频| 91精品国产麻豆| 久久精品国产免费| 久久九九全国免费| 成人夜色视频网站在线观看| 中文字幕亚洲电影| 欧美伊人久久久久久久久影院| 亚洲国产一区在线观看| 91 com成人网| 精品一区二区免费看| 久久久精品一品道一区| 成人性生交大片| 亚洲综合一区二区三区| 欧美裸体一区二区三区| 精品在线视频一区| 国产人伦精品一区二区| 99久久精品免费精品国产| 一区二区三区欧美亚洲| 欧美乱妇15p| 国产一区二区三区四区五区美女 | 欧美午夜免费电影| 青青草国产成人99久久| 国产三级欧美三级日产三级99 | 日本伊人色综合网| 精品国产1区2区3区| 成人动漫一区二区三区| 一个色综合网站| 日韩丝袜美女视频| 福利一区福利二区| 亚洲福利视频三区| 久久亚洲精品国产精品紫薇| 99视频国产精品| 偷拍与自拍一区| 欧美激情一区二区三区在线| 色欧美88888久久久久久影院| 日韩中文字幕av电影| 国产女主播一区| 欧美三级电影在线看| 久久99国内精品| 亚洲美女一区二区三区| 日韩亚洲电影在线| 91在线国产观看| 蜜臀久久99精品久久久久宅男 | 国产日韩欧美精品一区| 色香蕉久久蜜桃| 久久精品av麻豆的观看方式| 中文字幕不卡的av| 91精品国产综合久久小美女| 成人av在线播放网址| 日韩高清国产一区在线| 国产精品乱人伦| 日韩一二在线观看| 色婷婷综合久久久中文字幕| 久久国产精品一区二区| 亚洲美女屁股眼交3| 久久综合九色综合欧美就去吻 | 国产一区二区三区蝌蚪| 亚洲一二三区视频在线观看| 欧美激情综合在线| 欧美一级片免费看| 99re成人在线| 国产一区不卡视频| 五月婷婷激情综合| **欧美大码日韩| 久久夜色精品国产噜噜av| 欧美日韩国产美女| 91免费视频网| 国产69精品久久99不卡| 蜜乳av一区二区| 亚洲福利一区二区三区| 国产精品乱人伦一区二区| 欧美岛国在线观看| 欧美精品视频www在线观看| 99国产精品久久久久久久久久| 狠狠色狠狠色综合| 日本不卡在线视频| 亚洲最大色网站| 中文字幕中文字幕在线一区| 久久免费视频色| 日韩色视频在线观看| 欧洲精品中文字幕| av影院午夜一区| 国产福利91精品一区二区三区| 天天av天天翘天天综合网| 亚洲色图一区二区| 国产精品久久二区二区| 国产亚洲一区字幕| 亚洲精品一区二区三区四区高清| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品久久久久aaaa| 久久免费精品国产久精品久久久久| 91精品国产aⅴ一区二区| 欧美视频一区二区| 91精彩视频在线观看| 97久久精品人人澡人人爽| 成人黄色一级视频| 国产91对白在线观看九色| 国产在线观看一区二区| 久久国产精品无码网站| 麻豆一区二区三| 琪琪久久久久日韩精品| 丝袜亚洲另类欧美| 香蕉久久夜色精品国产使用方法 | 一区在线播放视频| 亚洲欧美综合色| 国产精品国产三级国产普通话蜜臀| 久久久久久久久岛国免费| 久久综合中文字幕| 国产亚洲成av人在线观看导航| xnxx国产精品| 久久麻豆一区二区| 国产亚洲欧美一区在线观看| 久久这里只有精品首页| 久久久国产一区二区三区四区小说 | a亚洲天堂av| 99精品视频中文字幕| 色婷婷亚洲综合| 欧美视频一区二区三区四区| 欧美日韩一区国产| 欧美一区二区在线视频| 日韩午夜中文字幕| xnxx国产精品| 亚洲国产精品99久久久久久久久 | 欧美成人在线直播| 久久亚洲一区二区三区明星换脸| 久久精品在这里| 国产精品美女久久久久久久久久久| 国产精品毛片大码女人| 亚洲区小说区图片区qvod| 亚洲综合精品久久| 日韩高清一级片| 韩国理伦片一区二区三区在线播放| 狠狠色综合播放一区二区| 丰满亚洲少妇av| 色婷婷av一区二区三区软件| 欧美日韩亚洲综合| 欧美精品一区二区三区蜜桃| 国产精品免费免费| 亚洲一区成人在线| 裸体歌舞表演一区二区| 国产精品小仙女| 色av一区二区| 日韩免费电影网站| 欧美激情一区二区三区| 一级日本不卡的影视| 久久精品国内一区二区三区| 国产福利91精品| 色婷婷激情一区二区三区| 日韩一区二区免费高清| 国产丝袜美腿一区二区三区| 夜夜夜精品看看| 精品一区二区三区在线播放视频 | 国产精品中文字幕一区二区三区|