锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一区精品电影,欧美亚洲不卡,欧美日韩国产欧http://www.shnenglu.com/85940806/Enhance Tech and Englishzh-cnSun, 24 Aug 2025 03:43:25 GMTSun, 24 Aug 2025 03:43:25 GMT60CreateProcesshttp://www.shnenglu.com/85940806/archive/2012/04/12/171107.htmlMike SongMike SongThu, 12 Apr 2012 08:59:00 GMThttp://www.shnenglu.com/85940806/archive/2012/04/12/171107.htmlhttp://www.shnenglu.com/85940806/comments/171107.htmlhttp://www.shnenglu.com/85940806/archive/2012/04/12/171107.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/171107.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/171107.html    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    si.cb = sizeof(STARTUPINFO);
    si.lpReserved = NULL;
    si.lpTitle = NULL;
    si.lpDesktop = NULL;
    si.dwX = si.dwY = si.dwYSize = si.dwXSize = 0;
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    si.lpReserved2 = NULL;
    si.cbReserved2 = 0;

    BOOL ret = CreateProcess(strHostFileFullName, NULL, NULL, NULL, FALSE, 0, NULL, strPath, &si, &pi);
    if (!ret) {
        return false;
    }

    WaitForInputIdle(pi.hProcess, 30000);

    XXXCtxActivator activator;
    if(!activator.IsActivated())
        return false;

    CComPtr<IClassFactory> pFactory;
    HRESULT hr = CoGetClassObject(CLSID_XXX, CLSCTX_LOCAL_SERVER, NULL, __uuidof(pFactory), reinterpret_cast<void**>(&pFactory));
    if (FAILED(hr))
        return false;

    CComPtr<IXXX> s_spXXX;
    hr = pFactory->CreateInstance(NULL, __uuidof(*s_spXXX), reinterpret_cast<void**>(&s_spXXX));
    if(FAILED(hr))
        return false;
    
    // If created successfully, start the monitoring thread
    DWORD dwProcessId = GetCurrentProcessId();
    long nMonitoringPid = 0;

    hr = s_spXXX->StartProcessManagementThread(dwProcessId, &nMonitoringPid);    if (FAILED(hr) || nMonitoringPid == 0)
        return false;


Mike Song 2012-04-12 16:59 鍙戣〃璇勮
]]>
Why "The system cannot find the batch label specified" is thrown even if label exists?http://www.shnenglu.com/85940806/archive/2011/08/30/154716.htmlMike SongMike SongTue, 30 Aug 2011 09:27:00 GMThttp://www.shnenglu.com/85940806/archive/2011/08/30/154716.htmlhttp://www.shnenglu.com/85940806/comments/154716.htmlhttp://www.shnenglu.com/85940806/archive/2011/08/30/154716.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/154716.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/154716.htmlThis is caused by the different line endings after syncing from P4. The P4 client has settings for LineEnd, "local" will show CRLF, while "share" shows LF. This error maybe only existing in x86 machine.








This is tricky issue. Thanks very much for Jeffery's help.

Mike Song 2011-08-30 17:27 鍙戣〃璇勮
]]>
mutablehttp://www.shnenglu.com/85940806/archive/2011/06/23/149239.htmlMike SongMike SongThu, 23 Jun 2011 02:39:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/23/149239.htmlhttp://www.shnenglu.com/85940806/comments/149239.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/23/149239.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/149239.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/149239.html
mutable鑻遍煶錛?mju:t蓹bl緹庨煶錛?mjut蓹b!錛屽艦瀹硅瘝錛屾剰涓烘槗鍙樼殑;鍙嶅鏃犲父鐨勩傚湪C++璇█涓紝鏄懡浠よ璦——濡傛灉涓涓嚱鏁拌const 淇グ錛岄偅涔堝畠灝嗘棤娉曚慨鏀瑰叾鎴愬憳鍙橀噺鐨勶紝浣嗘槸濡傛灉榪欎釜鎴愬憳鍙橀噺鏄mutable淇グ鐨勮瘽錛屽垯鍙互淇敼銆?/div>
mutable 鍙互鐢ㄦ潵鎸囧嚭錛屽嵆浣跨粨鏋勬垨鑰呯被鍙橀噺涓篶onst錛屽叾鏌愪釜鎴愬憳涔熷彲浠ヨ淇敼銆?

鍦╟++鐨勭被涓紝 濡傛灉涓涓嚱鏁拌const 淇グ錛岄偅涔堝畠灝嗘棤娉曚慨鏀瑰叾鎴愬憳鍙橀噺鐨勶紝浣嗘槸濡傛灉榪欎釜鎴愬憳鍙橀噺鏄mutable淇グ鐨勮瘽錛屽垯鍙互淇敼銆?/div>
渚嬪:
struct data
銆銆{
銆銆
char name[30];
銆銆mutable 
int accesses;
銆銆.
銆銆};
銆銆
const data veep = {"david";,0,}
銆銆strcpy(veep.name,
"Jimmy");// not allowed
銆銆veep.accesses++// allowed

銆veep 鐨刢onst闄愬畾絎︾姝㈢▼搴忎慨鏀箆eep鐨勬垚鍛橈紝浣哸ccess鎴愬憳鐨刴utable璇存槑絎﹁〃紺篴ccess涓嶅彈榪欑闄愬埗銆?/div>


Mike Song 2011-06-23 10:39 鍙戣〃璇勮
]]>Abstract Factoryhttp://www.shnenglu.com/85940806/archive/2011/06/11/148511.htmlMike SongMike SongSat, 11 Jun 2011 14:47:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148511.htmlhttp://www.shnenglu.com/85940806/comments/148511.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148511.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148511.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148511.html闃呰鍏ㄦ枃

Mike Song 2011-06-11 22:47 鍙戣〃璇勮
]]>
Factory Methodhttp://www.shnenglu.com/85940806/archive/2011/06/11/148510.htmlMike SongMike SongSat, 11 Jun 2011 14:39:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148510.htmlhttp://www.shnenglu.com/85940806/comments/148510.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148510.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148510.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148510.html
鍚嶇О Factory Method
緇撴瀯

鎰忓浘 瀹氫箟涓涓敤浜庡垱寤哄璞$殑鎺ュ彛錛岃瀛愮被鍐沖畾瀹炰緥鍖栧摢涓涓被銆侳actory Method 浣夸竴涓被鐨勫疄渚嬪寲寤惰繜鍒板叾瀛愮被銆?/td>
閫傜敤鎬?/td>
  • 褰撲竴涓被涓嶇煡閬撳畠鎵蹇呴』鍒涘緩鐨勫璞$殑綾葷殑鏃跺欍?
  • 褰撲竴涓被甯屾湜鐢卞畠鐨勫瓙綾繪潵鎸囧畾瀹冩墍鍒涘緩鐨勫璞$殑鏃跺欍?
  • 褰撶被灝嗗垱寤哄璞$殑鑱岃矗濮旀墭緇欏涓府鍔╁瓙綾諱腑鐨勬煇涓涓紝騫朵笖浣犲笇鏈涘皢鍝竴涓府鍔╁瓙綾繪槸浠g悊鑰呰繖涓淇℃伅灞閮ㄥ寲鐨勬椂鍊欍?





namespace FactoryMethod
{
  
public abstract class LightFactory
  {
    
public abstract Light CreateLight();
  }

  
public class BulbLightFactory : LightFactory
  {  
    
public override Light CreateLight()
    {
      
return new BulbLight();
    }
  }

  
public class TubeLightFactory : LightFactory
  {
      
public override Light CreateLight()
      {
        
return new TubeLight();
      }
  }
}

namespace FactoryMethod
{
  
public abstract class Light
  {
    
public abstract void TurnOn();
    
public abstract void TurnOff();
  }

  
public class BulbLight : Light
  {
    
public override void TurnOn()
    {
      Console.WriteLine(
"Bulb Ligh is Turned on.\n");
    }
    
public override void TurnOff()
    {
      Console.WriteLine(
"Bulb Ligh is Turned off.\n");
    }
  }

  
public class TubeLight : Light
  {
    
public override void TurnOn()
    {
      Console.WriteLine(
"Tube Ligh is Turned on.\n");
    }
    
public override void TurnOff()
    {
      Console.WriteLine(
"Tube Ligh is Turned off.\n");
    }
  }
}


namespace FactoryMethod
{
  
public class Client
  {
    
  
public static void Main()
    {
      LightFactory BulbFactory 
= new BulbLightFactory();
      LightFactory TubeFactory 
= new TubeLightFactory();

      Light l1 
= BulbFactory.CreateLight();
      Light l2 
= TubeFactory.CreateLight();

      l1.TurnOn();
      l1.TurnOff();

      Console.WriteLine(
"===============\n");

      l2.TurnOn();
      l2.TurnOff();
    }
  }
}


Mike Song 2011-06-11 22:39 鍙戣〃璇勮
]]>Observer http://www.shnenglu.com/85940806/archive/2011/06/11/148509.htmlMike SongMike SongSat, 11 Jun 2011 14:32:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148509.htmlhttp://www.shnenglu.com/85940806/comments/148509.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148509.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148509.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148509.html鍚嶇О Observer 緇撴瀯 ...  闃呰鍏ㄦ枃

Mike Song 2011-06-11 22:32 鍙戣〃璇勮
]]>
15 - memchrhttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.htmlMike SongMike SongSat, 11 Jun 2011 14:11:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.htmlhttp://www.shnenglu.com/85940806/comments/148508.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148508.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148508.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148508.html/***
*char *memchr(buf, chr, cnt) - search memory for given character.
*
*Purpose:
*       Searches at buf for the given character, stopping when chr is
*       first found or cnt bytes have been searched through.
*
*Entry:
*       void *buf  - memory buffer to be searched
*       int chr    - character to search for
*       size_t cnt - max number of bytes to search
*
*Exit:
*       returns pointer to first occurence of chr in buf
*       returns NULL if chr not found in the first cnt bytes
*
*Exceptions:
*
******************************************************************************
*/

void * __cdecl memchr (
        
const void * buf,
        
int chr,
        size_t cnt
        )
{
        
while ( cnt && (*(unsigned char *)buf != (unsigned char)chr) ) {
                buf 
= (unsigned char *)buf + 1;
                cnt
--;
        }

        
return(cnt ? (void *)buf : NULL);
}


Mike Song 2011-06-11 22:11 鍙戣〃璇勮
]]>
14 - memcpy and memmove differencehttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.htmlMike SongMike SongSat, 11 Jun 2011 14:09:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.htmlhttp://www.shnenglu.com/85940806/comments/148507.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148507.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148507.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148507.html/***
*memmove - Copy source buffer to destination buffer
*
*Purpose:
*       memmove() copies a source memory buffer to a destination memory buffer.
*       This routine recognize overlapping buffers to avoid propogation.
*       For cases where propogation is not a problem, memcpy() can be used.
*
*Entry:
*       void *dst = pointer to destination buffer
*       const void *src = pointer to source buffer
*       size_t count = number of bytes to copy
*
*Exit:
*       Returns a pointer to the destination buffer
*
*Exceptions:
******************************************************************************
*/

void * __cdecl mymemcpy (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;
  
/*
  * copy from lower addresses to higher addresses
  
*/
  
while (count--) {
    
*(char *)dst = *(char *)src;
    dst 
= (char *)dst + 1;
    src 
= (char *)src + 1;
  }

  
return(ret);
}

void * __cdecl mymemmove (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;

  
if (dst <= src || (char *)dst >= ((char *)src + count)) {
    
/*
    * Non-Overlapping Buffers
    * copy from lower addresses to higher addresses
    
*/
    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst + 1;
      src 
= (char *)src + 1;
    }
  }
  
else {
    
/*
    * Overlapping Buffers
    * copy from higher addresses to lower addresses
    
*/
    dst 
= (char *)dst + count - 1;
    src 
= (char *)src + count - 1;

    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst - 1;
      src 
= (char *)src - 1;
    }
  }

  
return(ret);
}

int _tmain(int argc, _TCHAR* argv[])
{
  
int i = 0;
  
int a[10];

  
for(i; i < 10; i++)
  {
    a[i] 
= i;
  }

  mymemcpy(
&a[4], a, sizeof(int)*6);

  
for(i = 0; i < 10; i++)
  {
    printf(
"%d ",a[i]);
  }

  printf(
"\n");

  
for(i=0; i < 10; i++)
  {
    a[i] 
= i;
  }
  mymemmove(
&a[4], a, sizeof(int)*6);

  
for(i = 0; i < 10; i++)
  {
    printf(
"%d ",a[i]);
  }

  printf(
"\n");

    
return 0;
}


Result:
0 1 2 3 0 1 2 3 0 1
0 1 2 3 0 1 2 3 4 5



Mike Song 2011-06-11 22:09 鍙戣〃璇勮
]]>
13 - memmovehttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.htmlMike SongMike SongSat, 11 Jun 2011 13:52:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.htmlhttp://www.shnenglu.com/85940806/comments/148506.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148506.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148506.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148506.html/***
*memmove - Copy source buffer to destination buffer
*
*Purpose:
*       memmove() copies a source memory buffer to a destination memory buffer.
*       This routine recognize overlapping buffers to avoid propogation.
*       For cases where propogation is not a problem, memcpy() can be used.
*
*Entry:
*       void *dst = pointer to destination buffer
*       const void *src = pointer to source buffer
*       size_t count = number of bytes to copy
*
*Exit:
*       Returns a pointer to the destination buffer
*
*Exceptions:
******************************************************************************
*/

void * __cdecl memmove (
  
void * dst,
  
const void * src,
  size_t count
  )
{
  
void * ret = dst;

  
if (dst <= src || (char *)dst >= ((char *)src + count)) {
    
/*
    * Non-Overlapping Buffers
    * copy from lower addresses to higher addresses
    
*/
    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst + 1;
      src 
= (char *)src + 1;
    }
  }
  
else {
    
/*
    * Overlapping Buffers
    * copy from higher addresses to lower addresses
    
*/
    dst 
= (char *)dst + count - 1;
    src 
= (char *)src + count - 1;

    
while (count--) {
      
*(char *)dst = *(char *)src;
      dst 
= (char *)dst - 1;
      src 
= (char *)src - 1;
    }
  }

  
return(ret);
}


Mike Song 2011-06-11 21:52 鍙戣〃璇勮
]]>
12 - memset http://www.shnenglu.com/85940806/archive/2011/06/11/148505.htmlMike SongMike SongSat, 11 Jun 2011 13:32:00 GMThttp://www.shnenglu.com/85940806/archive/2011/06/11/148505.htmlhttp://www.shnenglu.com/85940806/comments/148505.htmlhttp://www.shnenglu.com/85940806/archive/2011/06/11/148505.html#Feedback0http://www.shnenglu.com/85940806/comments/commentRss/148505.htmlhttp://www.shnenglu.com/85940806/services/trackbacks/148505.html/***
*char *memset(dst, val, count) - sets "count" bytes at "dst" to "val"
*
*Purpose:
*       Sets the first "count" bytes of the memory starting
*       at "dst" to the character value "val".
*
*Entry:
*       void *dst - pointer to memory to fill with val
*       int val   - value to put in dst bytes
*       size_t count - number of bytes of dst to fill
*
*Exit:
*       returns dst, with filled bytes
*
*Exceptions:
*
******************************************************************************
*/

void * __cdecl memset (
  
void *dst,
  
int val,
  size_t count
  )
{
  
void *start = dst;

  
while (count--) {
    
*(char *)dst = (char)val;
    dst 
= (char *)dst + 1;

  
return(start);
}


Mike Song 2011-06-11 21:32 鍙戣〃璇勮
]]>
久久亚洲国产精品一区二区| 亚洲Av无码国产情品久久| 久久久久久夜精品精品免费啦| 成人久久久观看免费毛片| 午夜视频久久久久一区| 乱亲女H秽乱长久久久| 久久天天躁狠狠躁夜夜av浪潮 | 一本久久a久久精品综合香蕉| 狠狠色综合网站久久久久久久高清| 久久精品国产亚洲欧美| 久久免费看黄a级毛片| 国产精品va久久久久久久| 人妻精品久久久久中文字幕69 | 国产高潮久久免费观看| 亚洲国产美女精品久久久久∴| 精品久久人人爽天天玩人人妻| 一本久久知道综合久久| 亚洲国产小视频精品久久久三级| 久久综合九色综合精品| 浪潮AV色综合久久天堂| 久久久久久精品免费免费自慰| 久久99精品久久久久久秒播| 久久久久久久久无码精品亚洲日韩| 久久精品这里只有精99品| 国产国产成人精品久久| 亚洲va久久久噜噜噜久久狠狠| 无码人妻少妇久久中文字幕| 久久国产成人| 国产精品欧美久久久久无广告| 国产成人精品白浆久久69| 久久午夜无码鲁丝片| 亚洲精品无码久久久久| 国产aⅴ激情无码久久| 久久精品国产亚洲AV蜜臀色欲| 欧美日韩精品久久免费| 久久无码AV中文出轨人妻| 无码国内精品久久综合88 | 一本大道久久香蕉成人网| 人妻系列无码专区久久五月天| 香蕉99久久国产综合精品宅男自 | 久久婷婷色综合一区二区|