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

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

?? dtwinver.cpp

?? 檢測機器操作系統的版本
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
        //must be running on a real version of 16 bit Windows whose underlying OS is DOS
        lpVersionInformation->dwUnderlyingMajorVersion = HIBYTE(HIWORD(dwVersion)); 
        lpVersionInformation->dwUnderlyingMinorVersion = LOBYTE(HIWORD(dwVersion)); 
        lpVersionInformation->dwUnderlyingBuildNumber = 0; 
        lpVersionInformation->dwUnderlyingPlatformId = PLATFORM_DOS;
        _fstrcpy(lpVersionInformation->szUnderlyingCSDVersion, "MS-DOS");
      }
    #else //Must be some version of real or emulated Dos
      
      //Retreive the current version of emulated dos
      BYTE DosMinor;
      BYTE DosMajor;
      _asm
      {
        mov ax, 3306h
        int 21h
        mov byte ptr [DosMajor], bl
        mov byte ptr [DosMinor], bh
      }
      lpVersionInformation->dwEmulatedPlatformId = PLATFORM_DOS;
      lpVersionInformation->dwEmulatedMajorVersion = (DWORD) DosMajor; 
      lpVersionInformation->dwEmulatedMinorVersion = (DWORD) DosMinor;                
      lpVersionInformation->dwEmulatedBuildNumber = 0; //no build number with Dos

      //We can detect if NT is running as it reports Dos v5.5
      if ((lpVersionInformation->dwEmulatedMajorVersion == 5) &&
          (lpVersionInformation->dwEmulatedMinorVersion == 50))    //NT reports Dos v5.5
      {
        _fstrcpy(lpVersionInformation->szUnderlyingCSDVersion, "Microsoft Windows NT");    
        //could not find method of determing version of NT from Dos,
        //so assume 3.50
        lpVersionInformation->dwUnderlyingMajorVersion = 3; 
        lpVersionInformation->dwUnderlyingMinorVersion = 50; 
        lpVersionInformation->dwUnderlyingBuildNumber = 0;  //cannot get access to build number from Dos
        lpVersionInformation->dwUnderlyingPlatformId = PLATFORM_NT_WORKSTATION;
      }            
      else
      {
        //Get the underlying OS here via the int 2FH interface of Windows
        GetWinInfo();
        if (bRunningWindows)
        {                   
          if (lpVersionInformation->dwEmulatedMajorVersion >= 7)  //Windows 95 marks itself as Dos 7
            lpVersionInformation->dwUnderlyingPlatformId = PLATFORM_WINDOWS;
          else                                                              
          {
            //Could not find method of differentiating between WFW & Win3.1 under Dos,
            //so assume Win3.1                                     
            lpVersionInformation->dwUnderlyingPlatformId = PLATFORM_WINDOWS31;      
          }  
          _fstrcpy(lpVersionInformation->szUnderlyingCSDVersion, "Microsoft Windows");
          lpVersionInformation->dwUnderlyingMajorVersion = (WinVer & 0xFF00) >> 8; 
          lpVersionInformation->dwUnderlyingMinorVersion = WinVer & 0x00FF; 
          lpVersionInformation->dwUnderlyingBuildNumber = 0;  //cannot get access to build number from Dos

        }
        else //must be on a real version of Dos
        {                               
          lpVersionInformation->dwUnderlyingMajorVersion = (DWORD) DosMajor; 
          lpVersionInformation->dwUnderlyingMinorVersion = (DWORD) DosMinor;                
          lpVersionInformation->dwUnderlyingBuildNumber = 0; //no build number with Dos
          lpVersionInformation->dwUnderlyingPlatformId = PLATFORM_DOS;
          _fstrcpy(lpVersionInformation->szUnderlyingCSDVersion, "MS-DOS");
        }
      }  
    #endif  
  #endif

  return TRUE;
}
                                  
                                  
      
      
#ifdef _WIN32      
BOOL WhichNTProduct(DWORD& dwVersion)
{
  const int MY_BUFSIZE = 100;
  TCHAR szProductType[MY_BUFSIZE];
  DWORD dwBufLen = MY_BUFSIZE * sizeof(TCHAR);
  HKEY hKey;
 
  if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                  _T("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"),
                  0,
                  KEY_EXECUTE,
                  &hKey) != ERROR_SUCCESS) 
    return FALSE;
 
  if (RegQueryValueEx(hKey,
                     _T("ProductType"),
                     NULL,
                     NULL,
                     (LPBYTE) szProductType,
                     &dwBufLen) != ERROR_SUCCESS)
    return FALSE;
 
  RegCloseKey(hKey);
        
  BOOL bSuccess = FALSE;

  // check product options, in order of likelihood   
  if (_tcsicmp(_T("WINNT"), szProductType) == 0)
  {
    dwVersion = PLATFORM_NT_WORKSTATION;
    bSuccess = TRUE;
  }  
  else if ((_tcsicmp(_T("SERVERNT"), szProductType) == 0) || (_tcsicmp(_T("LANMANNT"), szProductType) == 0))
  {
    dwVersion = PLATFORM_NT_SERVER;
    bSuccess = TRUE;
  }  
  
  return bSuccess;
}
#endif                                  
                                   

#if defined(_WINDOWS) && !defined(_WIN32)

UINT WINAPI WOWCreateVDMPointer16(DWORD dwLinBase, DWORD dwLimit)
{
  UINT uSelector, uDSSel;

  if (!(dwCapBits & WOW_VDMPTR16))
    return NULL;

  // Grab our DS (for access rights)
  __asm mov uDSSel, ds

  // Allocate a new selector
  uSelector = AllocSelector(uDSSel);
  if (uSelector)
  {
    // Assign its linear base address and limit
    SetSelectorBase(uSelector, dwLinBase);
    SetSelectorLimit(uSelector, dwLimit);
  }
  return uSelector;
}


UINT WINAPI WOWDeleteVDMPointer16(UINT uSelector)
{
  if (!(dwCapBits & WOW_VDMPTR16))
    return NULL;
  return FreeSelector(uSelector);
}


HWND32 WINAPI WOWHwndToHwnd32(HWND hWnd)
{
  if (!(dwCapBits & WOW_HWND32))
    return NULL;
  
  // OR mask the upper 16 bits
  HWND32 hWnd32 = (HWND32) (WORD) (hWnd);
  return (hWnd32 | 0xffff0000);
}


HINSTANCE32 WINAPI WOWLoadLibraryEx32(LPSTR lpszFile, HFILE32 hFile,
                                               DWORD dwFlags)
{
  if (!(dwCapBits & WOW_LOADLIBRARY))
    return NULL;

  return LoadLibraryEx32W(lpszFile, hFile, dwFlags);
}


BOOL WINAPI WOWFreeLibrary32(HINSTANCE32 hInst32)
{
  if (!(dwCapBits & WOW_FREELIBRARY))
    return NULL;

  return FreeLibrary32W(hInst32);
}


FARPROC WINAPI WOWGetProcAddress32(HINSTANCE32 hInst32,
                                            LPCSTR lpszProc)
{
  if (!(dwCapBits & WOW_GETPROCADDRESS))
    return NULL;
  return GetProcAddress32W(hInst32, lpszProc);
}


DWORD WINAPI WOWGetVDMPointer32(LPVOID lpAddress, UINT fMode)
{
  if (!(dwCapBits & WOW_VDMPTR32))
    return NULL;
  return GetVDMPointer32W(lpAddress, fMode);
}


DWORD WOWCallProc32(FARPROC lpfnFunction, DWORD dwAddressConvert, DWORD dwParams, ...)
{
  va_list vaList;
  DWORD   dwCount;
  DWORD   dwTemp;

  if (!(dwCapBits & WOW_CALLPROC))
    return NULL;

  // Variable list start
  va_start(vaList,dwParams);

  for(dwCount=0; dwCount < dwParams; dwCount++)
  {
    // Pull each variable off of the stack
    dwTemp=(DWORD)va_arg(vaList,DWORD);

    // Push the DWORD
    __asm push word ptr [dwTemp+2];
    __asm push word ptr [dwTemp];
  }
  // Variable list end
  va_end(vaList);

  // Call Win32.  The pushed variable list precedes the parameters.
  // Appropriate parameters will be popped by this function (based
  // on the value in dwParams)
  return CallProc32W(lpfnFunction, dwAddressConvert, dwParams);
}


BOOL WFWLoaded()
{
  const WORD WNNC_NET_MultiNet         = 0x8000;
  const WORD WNNC_SUBNET_WinWorkgroups = 0x0004;
  const WORD WNNC_NET_TYPE             = 0x0002;
  BOOL rVal;
   
  HINSTANCE hUserInst = LoadLibrary("USER.EXE");
  lpfnWNetGetCaps lpWNetGetCaps = (lpfnWNetGetCaps) GetProcAddress(hUserInst, "WNetGetCaps");
  if (lpWNetGetCaps != NULL)
  {
    // Get the network type
    WORD wNetType = lpWNetGetCaps(WNNC_NET_TYPE);
    if (wNetType & WNNC_NET_MultiNet)
    {
      // a multinet driver is installed
      if (LOBYTE(wNetType) & WNNC_SUBNET_WinWorkgroups) // It is WFW
        rVal = TRUE;
      else // It is not WFW
        rVal = FALSE;
    }
    else
     rVal = FALSE;
  }
  else
    rVal = FALSE;
   
  // Clean up the module instance
  if (hUserInst)
    FreeLibrary(hUserInst);
    
  return rVal;  
}

#endif //defined(_WINDOWS) && !defined(_WIN32)



             
#ifdef _DOS             
void GetWinInfo()
{ 
  BYTE MajorVer;
  BYTE MinorVer;

  //use some inline assembly to determine if Windows if
  //running and what version is active
  _asm
  {
  ; check for Windows 3.1
    mov     ax,160ah                ; WIN31CHECK
    int     2fh                     ; check if running under Win 3.1.
    or      ax,ax
    jz      RunningUnderWin31       ; can check if running in standard
                                    ; or enhanced mode
   
  ; check for Windows 3.0 enhanced mode
    mov     ax,1600h                ; WIN386CHECK
    int     2fh
    test    al,7fh
    jnz     RunningUnderWin30Enh    ; enhanced mode
   
  ; check for 3.0 WINOLDAP
    mov     ax,4680h                ; IS_WINOLDAP_ACTIVE
    int     2fh
    or      ax,ax                   ; running under 3.0 derivative?
    jnz     NotRunningUnderWin
   
  ; rule out MS-DOS 5.0 task switcher
    mov     ax,4b02h                ; detect switcher
    push    bx
    push    es
    push    di
    xor     bx,bx
    mov     di,bx
    mov     es,bx
    int     2fh
    pop     di
    pop     es
    pop     bx
    or      ax,ax
    jz      NotRunningUnderWin      ; MS-DOS 5.0 task switcher found
   
  ; check for standard mode Windows 3.0
    mov     ax,1605h                ; PMODE_START
    int     2fh
    cmp     cx,-1
    jz      RunningUnderWin30Std
   
  ; check for real mode Windows 3.0
    mov     ax,1606h                ; PMODE_STOP
    int     2fh                     ; in case someone is counting
    ; Real mode Windows 3.0 is running
    mov     byte ptr [bRunningWindows], 1
    mov     byte ptr [MajorVer], 3h    
    mov     byte ptr [MinorVer], 0h        
    jmp     ExitLabel
   
  RunningUnderWin30Std:
    ; Standard mode Windows 3.0 is running
    mov     byte ptr [bRunningWindows], 1
    mov     byte ptr [MajorVer], 3h    
    mov     byte ptr [MinorVer], 0h        
    jmp     ExitLabel
   
  RunningUnderWin31:
    ; At this point: CX == 3 means Windows 3.1 enhanced mode
    ;                CX == 2 means Windows 3.1 standard mode
    mov     byte ptr [bRunningWindows], 1
    
    ; Get the version of Windows 
    mov     ax, 1600h   ; Get Enhanced-Mode Windows Installed State
    int     2Fh
    mov     byte ptr [MajorVer], al
    mov     byte ptr [MinorVer], ah
    jmp     ExitLabel
   
  RunningUnderWin30Enh:
    ; Enhanced mode Windows 3.0 is running
    mov     byte ptr [bRunningWindows], 1    
    mov     byte ptr [MajorVer], 3h    
    mov     byte ptr [MinorVer], 0h        
    jmp     ExitLabel
   
  NotRunningUnderWin:                    
    mov     byte ptr [bRunningWindows], 0
    
  ExitLabel:
  }             
  
  WinVer = (WORD) ((MajorVer << 8) + MinorVer);
} 

#endif //_DOS 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成精品久久久久久| 青青青爽久久午夜综合久久午夜 | 成人av资源网站| 日本一区二区成人| av激情综合网| 亚洲国产精品一区二区www| 欧美日本在线一区| 久久成人综合网| 欧美国产一区二区在线观看| 99久久久国产精品免费蜜臀| 亚洲女子a中天字幕| 在线播放亚洲一区| 国产在线精品不卡| 亚洲欧美自拍偷拍| 欧美调教femdomvk| 麻豆国产欧美日韩综合精品二区| 久久久久久97三级| 色哟哟精品一区| 美女视频网站久久| 国产精品视频一二三区| 亚洲一区二区三区四区中文字幕| 91精品久久久久久蜜臀| 国产尤物一区二区在线| 最新日韩在线视频| 欧美一区二区久久| 成人午夜在线视频| 亚洲aⅴ怡春院| 亚洲精品在线三区| 日本丶国产丶欧美色综合| 热久久一区二区| 中文字幕日本乱码精品影院| 欧美日韩一二区| 国产一区二区精品久久99| 一区二区三区四区不卡在线| 日韩手机在线导航| 91丨国产丨九色丨pron| 青青草国产精品亚洲专区无| 国产精品看片你懂得| 欧美夫妻性生活| 国产成人夜色高潮福利影视| 亚洲国产日韩精品| 欧美国产日韩在线观看| 777奇米成人网| www.欧美精品一二区| 人人精品人人爱| 亚洲老司机在线| 久久九九99视频| 91精品国产综合久久香蕉麻豆| 国产精品天美传媒| 日韩一区二区精品葵司在线| 99久久精品免费看国产免费软件| 奇米精品一区二区三区四区| 国产精品大尺度| 欧美xxxxxxxxx| 在线视频一区二区三| 国产精品88av| 日本不卡一区二区| 一区二区三区中文在线| 久久久久国产精品人| 欧美日本一区二区三区| 91在线一区二区三区| 国产又黄又大久久| 肉色丝袜一区二区| 一区二区在线电影| 欧美激情一区二区三区在线| 日韩精品一区二区三区在线观看| 色菇凉天天综合网| 暴力调教一区二区三区| 黄色日韩三级电影| 日韩电影一二三区| 亚洲国产精品自拍| 亚洲免费大片在线观看| 国产日韩欧美一区二区三区综合| 欧美一区二区视频观看视频| 色婷婷国产精品| 成人激情动漫在线观看| 国产婷婷色一区二区三区四区| 日韩一区二区三区四区五区六区| 欧美特级限制片免费在线观看| 99国产精品久久久久久久久久| 国产999精品久久久久久绿帽| 麻豆精品国产91久久久久久| 无吗不卡中文字幕| 亚洲图片欧美综合| 亚洲一区二区三区国产| 综合久久给合久久狠狠狠97色| 国产亚洲短视频| www日韩大片| 欧美一区二区黄色| 欧美精品自拍偷拍| 欧美剧情片在线观看| 欧美色图片你懂的| 欧美性生活一区| 欧美亚洲国产怡红院影院| 色婷婷一区二区三区四区| 99久久婷婷国产综合精品| 成人综合在线观看| 国产aⅴ综合色| 国产成人在线色| 国产69精品一区二区亚洲孕妇| 国产在线一区观看| 国产精品 欧美精品| 国产一区欧美日韩| 国产一区二区日韩精品| 国产精品一区二区x88av| 国产精品一二三区在线| 国产成人丝袜美腿| 欧美激情一区二区三区不卡| 久久精品在这里| 国产精品色哟哟网站| 中文一区一区三区高中清不卡| 久久成人久久鬼色| 日韩视频永久免费| 欧美一区二区三区视频在线| 欧美精品18+| 91精品国产综合久久久蜜臀粉嫩| 欧美女孩性生活视频| 91麻豆精品国产自产在线| 91精品国产综合久久蜜臀| 日韩欧美视频在线| 久久综合九色综合欧美亚洲| 久久久久久久久久久久电影 | 色综合久久综合网| 一本大道av一区二区在线播放| 色婷婷久久一区二区三区麻豆| 欧美亚洲国产bt| 欧美精品久久天天躁| 日韩精品一区二区三区视频播放| 欧美成人一区二区三区片免费| 欧美精品一区二| 中文字幕第一页久久| 综合av第一页| 亚洲国产毛片aaaaa无费看| 日韩激情在线观看| 国产一区二三区| 亚洲免费在线视频一区 二区| 综合精品久久久| 亚洲福利一区二区| 蜜乳av一区二区三区| 国产剧情av麻豆香蕉精品| 97精品久久久午夜一区二区三区| 色就色 综合激情| 欧美一级理论片| 国产精品视频你懂的| 亚洲线精品一区二区三区八戒| 美女在线一区二区| 国产91高潮流白浆在线麻豆| 色综合av在线| 日韩一区二区三区电影| 国产精品水嫩水嫩| 五月天视频一区| 国产成人在线视频免费播放| 91福利社在线观看| 日韩一级高清毛片| 亚洲欧美自拍偷拍| 免费观看在线综合| 懂色中文一区二区在线播放| 91视频免费播放| 日韩一级完整毛片| 一区在线播放视频| 免费在线一区观看| eeuss影院一区二区三区| 欧美日韩免费电影| 久久久久久久电影| 午夜一区二区三区视频| 国产美女久久久久| 欧美午夜寂寞影院| 国产日韩精品一区二区浪潮av| 一区二区三区国产精华| 精品亚洲porn| 亚洲综合色在线| 国产成人精品1024| 制服丝袜在线91| 亚洲欧洲国产专区| 青青草伊人久久| 99久久婷婷国产综合精品电影| 欧美一级在线免费| 亚洲男人的天堂网| 国产一区二区三区av电影| 欧美亚洲图片小说| 亚洲国产电影在线观看| 在线一区二区观看| 日韩视频一区二区在线观看| 欧美国产视频在线| 日韩精品三区四区| 成人免费精品视频| 日韩欧美视频在线| 欧美日韩aaaaaa| 日韩欧美成人一区二区| 日韩亚洲欧美在线观看| 一区二区三区中文字幕电影| 国产中文一区二区三区| 欧美少妇一区二区| 国产精品福利一区二区三区| 蜜桃视频一区二区| 欧美三级电影在线看| 亚洲欧洲av另类| 国产suv精品一区二区883| 日韩丝袜情趣美女图片| 亚洲午夜一区二区三区|