锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日本精品一区二区久久久 ,麻豆精品久久精品色综合,热久久视久久精品18http://www.shnenglu.com/SysProgrammer/category/7952.htmlMemory Layout......zh-cnSat, 29 May 2010 10:12:45 GMTSat, 29 May 2010 10:12:45 GMT60鍒╃敤綆¢亾瀵硅繘紼嬮噸瀹氬悜http://www.shnenglu.com/SysProgrammer/archive/2010/05/25/116333.htmlRenoRenoTue, 25 May 2010 15:07:00 GMThttp://www.shnenglu.com/SysProgrammer/archive/2010/05/25/116333.htmlhttp://www.shnenglu.com/SysProgrammer/comments/116333.htmlhttp://www.shnenglu.com/SysProgrammer/archive/2010/05/25/116333.html#Feedback0http://www.shnenglu.com/SysProgrammer/comments/commentRss/116333.htmlhttp://www.shnenglu.com/SysProgrammer/services/trackbacks/116333.html涓涓閬撴湁璇葷鍜屽啓绔?褰撲綘鎶婅繖涓閬撳拰涓涓繘紼嬫惌鎺ヨ搗鏉ョ殑鏃跺?鍙互鐢ㄨ繖涓閬撳綋浣滆緭鍏?涔熷彲浠ョ敤榪欎釜綆¢亾褰撲綔杈撳嚭,濡傛灉鏄鍚戠閬撹緭鍏?鍒欐暟鎹緭鍏ョ鏄啓绔?鍙︿竴绔槸璇葷,濡傛灉鏄敱綆¢亾杈撳嚭,鍒欑敱榪涚▼鍐欏叆綆¢亾,鏄啓绔?鍙︿竴绔槸璇葷,涔熷氨鏄帴鏀惰繘紼嬬殑杈撳嚭鏁版嵁鐨勪竴绔?鍥犳濡傛灉瑕侀噸瀹氬悜榪涚▼鐨勮緭鍏ュ拰杈撳嚭,鍒欓渶瑕?鏍圭閬?
浠ヤ笅浠g爜婕旂ず浜嗗垱寤篊MD.EXE榪涚▼,騫剁敤2鏍圭閬撻噸瀹氬悜浠栫殑杈撳叆杈撳嚭,騫惰鍙朇MD浜х敓鐨勭粨鏋滄暟鎹?
鍗冧竾涓嶈蹇樿璁劇疆SECURITY_ATTRIBUTES閲岀殑bInheritHandle,姣斿鍒涘緩綆¢亾鐨勬椂鍊欒鎶奲InheritHandle璁劇疆涓篢RUE

鍚屾牱涓嶄竴瀹氳鐢ㄧ閬?姣斿鏂囦歡,SOCKET絳夐兘鍙互閲嶅畾鍚?
濡傛灉鏄敤SOCKET,鏍規(guī)嵁緗戜笂鐨勫悕璇?鍙互鍒涘緩涓涓?闆剁閬撳悗闂?紼嬪簭.姣斿鍦ㄦ湇鍔″櫒绔笂鐨勫悗闂ㄧ▼搴忕洃鍚煇涓鍙?涓鏃︽湁榪炴帴璇鋒眰,鎺ュ彈鍚庡垱寤篠OCKET,灝卞湪榪欎釜鏃跺欏紑鍚疌MD.EXE,騫墮噸瀹氬悜杈撳叆杈撳嚭鍒版湇鍔″櫒涓婄殑榪欎釜SOCKET,榪欐牱渚夸負(fù)榪滅▼鐨勮繖涓繛鎺ヨ姹傚紑浜嗕竴涓湇鍔″櫒涓婄殑鍚庨棬錛屼粠鑰岃繙紼嬭繛鎺ュ彲浠ユ墽琛屾湇鍔″櫒騫惰繑鍥炵粨鏋?
婕旂ず浠g爜濡備笅:
//
// File: Main.cpp
// Purpose: Creates a process( cmd.exe for example ), and redirect its standard input
//   by using creating a pipe, then writes some bytes as commands to pipe.
//
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#include <stdio.h>
#include <stdlib.h>

// Error report
void Error( const char *szErrMsg );

int main( int argc, char **argv )
{
 // Create pipe
 BOOL bRet;
 HANDLE hPipeRead, hPipeWrite;
 HANDLE hPipeReadII, hPipeWriteII;
 SECURITY_ATTRIBUTES sa;
 sa.nLength = sizeof( SECURITY_ATTRIBUTES );
 sa.bInheritHandle = TRUE;
 sa.lpSecurityDescriptor = NULL;
 bRet = ::CreatePipe( &hPipeRead, &hPipeWrite, &sa, 512 );
 bRet &= ::CreatePipe( &hPipeReadII, &hPipeWriteII, &sa, 512 );
 if ( !bRet )
 {
  Error( "Can't create pipe!" );
  return -1;
 }
 // Spawn a process
 STARTUPINFO StartInfo;
 PROCESS_INFORMATION ProcessInfo;
// memset( &StartInfo, 0, sizeof(StartInfo) );
// memset( &ProcessInfo, 0, sizeof(ProcessInfo) );
 ::GetStartupInfo( &StartInfo );
 StartInfo.cb = sizeof(StartInfo);
 StartInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
 StartInfo.wShowWindow = SW_HIDE;
 StartInfo.hStdInput = hPipeRead;
 StartInfo.hStdOutput = hPipeWriteII; //::GetStdHandle( STD_OUTPUT_HANDLE );
 StartInfo.hStdError = hPipeWriteII; //::GetStdHandle( STD_OUTPUT_HANDLE );
 bRet = ::CreateProcess( TEXT("c:\\windows\\system32\\cmd.exe"), NULL, NULL, NULL, TRUE, 0, NULL, NULL, &StartInfo, &ProcessInfo );
 ::Sleep(1000);
 printf("wake up...\n");
 if ( !bRet )
 {
  Error( "Can't create process!" );
  return -1;
 }
 // Write commands to pipe
 char *szCmd = "netstat\r\n";
 DWORD dwDummy;
 ::WriteFile( hPipeWrite, szCmd, 10, &dwDummy, NULL );
 ::Sleep(2000);
 printf("had written...\n");
 // Read from pipe
 char szBuf[1024];
 memset(szBuf, 0, sizeof(szBuf));
 ::ReadFile( hPipeReadII, szBuf, sizeof(szBuf), &dwDummy, NULL );
 // Don't leave till the spawned process goes end
// ::Sleep(2000);
 printf("had read...\n");
// ::WaitForSingleObject( ProcessInfo.hProcess, INFINITE );
 printf("%s\n", szBuf);

 return 0;
}

void Error( const char *szErrMsg )
{
 printf( "Error: %s\n", szErrMsg );
}


鍦╓inXP SP2 + VS 2005 Express Edition涓婄紪璇戝茍榪愯閫氳繃
榪欎釜鐗堟湰鐨刅S闇瑕佷笅杞藉茍璁劇疆Platform SDK,騫跺彟澶栨壘涓涓狹SVCRT80D.DLL濡傛灉鏄疍EBUG鐗堟湰鐨凞LL,騫惰緗?br>鍖呭惈鍜岄摼鎺ョ洰褰曞拰閾炬帴鍣ㄥ懡浠よ(user32,kernel32,libcmt)


Reno 2010-05-25 23:07 鍙戣〃璇勮
]]>
涓浜涢棶棰樼殑瑙e喅鏂規(guī)硶http://www.shnenglu.com/SysProgrammer/archive/2009/05/06/82061.htmlRenoRenoWed, 06 May 2009 08:27:00 GMThttp://www.shnenglu.com/SysProgrammer/archive/2009/05/06/82061.htmlhttp://www.shnenglu.com/SysProgrammer/comments/82061.htmlhttp://www.shnenglu.com/SysProgrammer/archive/2009/05/06/82061.html#Feedback0http://www.shnenglu.com/SysProgrammer/comments/commentRss/82061.htmlhttp://www.shnenglu.com/SysProgrammer/services/trackbacks/82061.html   縐頒負(fù)瑙e喅鏂規(guī)硶鏄洜涓鴻繖浜涢棶棰樺疄鍦ㄥお灝忎簡錛屾柟妗堟牴鏈畻涓嶄笂.
   1. 鎯寵鍦╒S2003涓嬪緩绔嬩竴涓」鐩?寮瑰嚭 Automation涓嶈兘鍒涘緩瀵硅薄.GOOGLE鍚?regsvr32 scrrun.dll 娉ㄥ唽鎼炲畾
   2. 鎯寵鎵撳紑<<MFC綾誨簱璇﹁В.CHM>>,寮瑰嚭mk@DICTSTORE:your chm file absolute path,鎵撲笉寮,榪欎釜闂鎼炰簡浼?xì)鏃堕? \
      a錛屽彸閿叧鑱攃hm鏂囦歡鐨?#8220;鎵撳紑鏂瑰紡”鍒癨Windows\HH.exe 
      b錛屽湪鍛戒護(hù)琛岃繍琛宺egsvr32 itss.dll 
      c錛屽湪鍛戒護(hù)琛岃繍琛宺egsvr32 hhctrl.ocx
   3. 鎶婂師鏉ョ殑VC6欏圭洰縐誨埌VS2003鍚?緙栬瘧鍑虹幇:fatal error C1010: 鍦ㄦ煡鎵鵑緙栬瘧澶存寚浠ゆ椂閬囧埌鎰忓鐨勬枃浠剁粨灝?br>      鍙抽敭鐐歸」鐩悕,閫夋嫨灞炴?鍏堜笉浣跨敤棰勭紪璇戝ご鏂囦歡,鐒跺悗鍐嶆緙栬瘧,OK鍚庡湪閲嶆柊璧風(fēng)敤棰勭紪璇戝ご鏂囦歡.濉啓StdAfx.h  $(InitDir)\$(IntDir)/$(TargetName).pch

   閬囧埌榪欎簺闂,GOOGLE涓嬭繕鏄潪甯稿鏄撴悶鐨?
   bwt, 鍓嶅嚑澶╅噸瑁呯郴緇?鐢變簬鎳掔殑瑁匒nti-Virus,灝ゅ叾鏄壂鎻忔椂闂?鍥犳緋葷粺鐥呮瘨鏈夌偣澶氱殑.鍚庨潰褰誨簳闈╂柊,鍙戠幇鎸変互涓嬮『搴忕殑鎵ц鎸囦護(hù),灝卞彲浠ヤ繚鎶ゅソ緋葷粺.
   1.涓嬭澆360
   2. 鎵撳ソ鎵鏈夐仐婕忚ˉ涓?br>   3. 寮鍚疻INDOWS闃茬伀澧?璧風(fēng)敤鏇存柊
   4.寮鍚墍鏈?60淇濇姢
   5.涓嬭澆KA宸?鍙互閫氳繃360鐩存帴涓?
   6.鏇存柊鐥呮瘨搴撳埌鏈鏂?br>   7.鍏ㄧ郴緇熸壂鎻?璇ユ潃鐨勬潃
   鍏徃閲岀殑鐢?shù)鑴戞垜灏睒q欐牱鎵撻?緇撴灉鍛嗕簡榪?騫?1嬈¢兘娌¢噸瑁?鏈夌偣鎭愭栫殑...

   鍙戠幇CPU,鎸囦護(hù)闆嗛潪甯告湁瓚?鍐欑殑LamaVM铏氭嫙鏈哄揩濂戒簡.


Reno 2009-05-06 16:27 鍙戣〃璇勮
]]>
綰跨▼鍚屾瀵硅薄http://www.shnenglu.com/SysProgrammer/archive/2008/08/17/Thread.htmlRenoRenoSun, 17 Aug 2008 14:17:00 GMThttp://www.shnenglu.com/SysProgrammer/archive/2008/08/17/Thread.htmlhttp://www.shnenglu.com/SysProgrammer/comments/59164.htmlhttp://www.shnenglu.com/SysProgrammer/archive/2008/08/17/Thread.html#Feedback0http://www.shnenglu.com/SysProgrammer/comments/commentRss/59164.htmlhttp://www.shnenglu.com/SysProgrammer/services/trackbacks/59164.html  Waiting for Multiple Objects

    鍦╓indows涓? WaitForMultipleObjects鍑芥暟鏄竴縐嶅悓姝ョ殑鏂規(guī)硶,鍘熷艦瀹氫箟濡備笅:
    DWORD WinApi WaitForMultipleObjects( 
         DWORD nCount, const Handle * lpHandles, BOOL bWaitAll, DWORD dwMilliseconds );

   璋冪敤璇ュ嚱鏁扮殑綰跨▼榪涘叆絳夊緟鐘舵?鐩村埌鏉′歡婊¤凍鏃剁戶緇墽琛?鏉′歡鐨勬弧瓚沖拰鍙傛暟鏈夊叧.
   絎竴涓弬鏁頒負(fù)瑕佺瓑寰呯殑Objects鐨勪釜鏁?閫氬父榪欎簺Objects鏄竴緇勫彞鏌?Handles),鍙互鏄唴鏍稿璞″彞鏌勬垨鑰呮槸闈炲唴鏍稿璞?br>   鍙ユ焺,榪欎竴緇勫彞鏌勭敱絎?涓寚鍚戝垎閰嶇粰涓緋誨垪鍙ユ焺緙撳啿鍖虹殑鎸囬拡鎸囧嚭,絎?涓弬鏁板鏋滀負(fù)TRUE,鍒欑瓑寰呯殑綰跨▼蹇呴』絳夊埌鎵鏈?br>   鍙ユ焺鍏ㄩ儴瀹屾垚鎵ц鍚庢墠緇х畫鎵ц,濡傛灉涓篎ALSE, 閭d箞鍙鏈変竴涓繑鍥炲嵆鍙戶緇墽琛?絎?涓弬鏁拌緗甌IMEOUT鐨勬椂闂?
   濡傛灉鍦ㄧ粰瀹氱殑dwMilliseconds鍐呬粛娌$瓑鍒版潯浠舵弧瓚沖垯榪斿洖.

   閭d箞濡備綍寰楀埌絳夊緟鐨勭粨鏋滃憿,濡傛灉bWaitAll璁劇疆涓篢RUE,灝嗚繑鍥炲煎拰W(xué)AIT_OBJECT_0姣旇緝,濡傛灉鐩哥瓑鍒欏叏閮ㄥ彞鏌勯兘宸?br>   鍙戝嚭浜嗗畬鎴愪俊鍙? 濡傛灉bWaitAll璁劇疆涓篎ALSE, 濡傛灉鍙敱涓涓彂鍑轟俊鍙?閭d箞灝嗚繑鍥炲煎噺鍘籛AIT_OBJECT_0灝辨槸鍙?br>   鏌勬暟緇勪腑鐨勭儲(chǔ)寮?濡傛灉鏈夊涓俊鍙峰彂鍑?閭d箞榪欎釜鍊兼槸鏁扮粍涓渶灝忕儲(chǔ)寮曠殑閭d竴涓?榪欐牱灝卞彲浠ュ垽鏂槸鍝釜鍙戝嚭浜嗗畬鎴愪俊鍙?

   閫氬父,榪欎簺瑕佺瓑寰呯殑Objects鏄湪鍏朵粬鐨勭嚎紼嬩腑鎵ц鐨?閭d箞鎵ц瀹屾垚鍚庤皟鐢⊿etEvent( HANDLE hObjHandle )灝卞彲浠?br>   鍙戝嚭涓涓畬鎴愪俊鍙?渚涜皟鐢╓aitForMultipleObjects鐨勭嚎紼嬫帴鏀?

   浠ヤ笅鏄竴涓浣曚嬌鐢ㄨ鍑芥暟鐨勭畝鍗曚緥瀛?瀹冧嬌鐢–reateEvent鍑芥暟鍒涘緩浜?涓簨浠跺璞?鏀懼叆鍏ㄥ眬鐨刧hEvents緙撳瓨,鐒跺悗
   鍒涘緩浜嗕竴涓嚎紼?絳夊緟璇ョ嚎紼嬪彂鍑哄畬鎴愪俊鍙?
   //
  // Sync01.cpp
  //
 
 #include <windows.h>
 #include <stdio.h>
HANDLE ghEvents[2];
 DWORD WINAPI ThreadProc( LPVOID );
void main()
{
HANDLE hThread;
DWORD i, dwEvent, dwThreadID;
// Create two event objects
for (i = 0; i < 2; i++)
{
ghEvents[i] = CreateEvent(
NULL,   // default security attributes
FALSE,  // auto-reset event object
FALSE,  // initial state is nonsignaled
NULL);  // unnamed object
if (ghEvents[i] == NULL)
{
printf("CreateEvent error: %d\n", GetLastError() );
ExitProcess(0);
}
}
// Create a thread
hThread = CreateThread(
NULL,         // default security attributes
0,            // default stack size
(LPTHREAD_START_ROUTINE) ThreadProc,
NULL,         // no thread function arguments
0,            // default creation flags
&dwThreadID); // receive thread identifier
if( hThread == NULL )
{
printf("CreateThread error: %d\n", GetLastError());
return;
}
// Wait for the thread to signal one of the event objects
dwEvent = WaitForMultipleObjects(
2,           // number of objects in array
ghEvents,     // array of objects
FALSE,       // wait for any object
5000);       // five-second wait
// The return value indicates which event is signaled
switch (dwEvent)
{
// ghEvents[0] was signaled
case WAIT_OBJECT_0 + 0:
// TODO: Perform tasks required by this event
printf("First event was signaled.\n");
break;
// ghEvents[1] was signaled
case WAIT_OBJECT_0 + 1:
// TODO: Perform tasks required by this event
printf("Second event was signaled.\n");
break;
case WAIT_TIMEOUT:
printf("Wait timed out.\n");
break;
// Return value is invalid.
default:
printf("Wait error: %d\n", GetLastError());
ExitProcess(0);
}
// Close event handles
for (i = 0; i < 2; i++)
CloseHandle(ghEvents[i]);
}
DWORD WINAPI ThreadProc( LPVOID lpParam )
{
// Set one event to the signaled state
if ( !SetEvent(ghEvents[0]) )
{
printf("SetEvent failed (%d)\n", GetLastError());
return -1;
}
return 1;
}


Reno 2008-08-17 22:17 鍙戣〃璇勮
]]>
亚洲精品乱码久久久久久不卡| 久久午夜羞羞影院免费观看| 久久久久18| 亚洲精品97久久中文字幕无码| 色偷偷88欧美精品久久久| 亚洲中文字幕无码久久2017| 2021久久精品国产99国产精品| 久久99精品免费一区二区| 久久久久av无码免费网| 女人香蕉久久**毛片精品| 欧美亚洲国产精品久久久久| 久久精品国产福利国产秒| 中文成人无码精品久久久不卡 | 99久久99这里只有免费的精品| 精品久久一区二区三区| 久久久亚洲裙底偷窥综合| 91精品国产91久久久久久| 久久人人爽人人爽人人片AV不| 国产精品嫩草影院久久| 91精品国产乱码久久久久久| 亚洲欧美日韩精品久久亚洲区 | 综合久久给合久久狠狠狠97色| 高清免费久久午夜精品| 久久久亚洲欧洲日产国码二区 | 亚洲国产精品婷婷久久| 亚洲级αV无码毛片久久精品| 久久精品国产亚洲5555| 9久久9久久精品| 国内精品久久久久久久97牛牛| 久久久久久亚洲精品影院| 久久亚洲国产精品五月天婷| 久久综合九色综合97_久久久| 国产精品99精品久久免费| 性色欲网站人妻丰满中文久久不卡| 色青青草原桃花久久综合| 久久无码一区二区三区少妇| 久久精品国产亚洲精品| 久久人妻少妇嫩草AV蜜桃| 久久久久亚洲爆乳少妇无| 日本高清无卡码一区二区久久| 久久人人超碰精品CAOPOREN|