GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — cpython/PC/validate_ucrtbase.py at master · python-emscripten/cpython Expand file tree/ Copy pathvalidate_ucrtbase.pyMore file actions 89 lines (76 loc) · 2.69 KB / Copy pathvalidate_ucrtbase.pyFile metadata and controls89 lines (76 loc) · 2.69 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 ''' This script gets the version number from ucrtbased.dll and checks whether it is a version with a known issue. ''' import sys from ctypes import (c_buffer, POINTER, byref, create_unicode_buffer, Structure, WinDLL) from ctypes.wintypes import DWORD, HANDLE class VS_FIXEDFILEINFO(Structure): _fields_ = [ ("dwSignature", DWORD), ("dwStrucVersion", DWORD), ("dwFileVersionMS", DWORD), ("dwFileVersionLS", DWORD), ("dwProductVersionMS", DWORD), ("dwProductVersionLS", DWORD), ("dwFileFlagsMask", DWORD), ("dwFileFlags", DWORD), ("dwFileOS", DWORD), ("dwFileType", DWORD), ("dwFileSubtype", DWORD), ("dwFileDateMS", DWORD), ("dwFileDateLS", DWORD), ] kernel32 = WinDLL('kernel32') version = WinDLL('version') if len(sys.argv) < 2: print('Usage: validate_ucrtbase.py <ucrtbase|ucrtbased>') sys.exit(2) try: ucrtbased = WinDLL(sys.argv[1]) except OSError: print('Cannot find ucrtbased.dll') # This likely means that VS is not installed, but that is an # obvious enough problem if you're trying to produce a debug # build that we don't need to fail here. sys.exit(0) # We will immediately double the length up to MAX_PATH, but the # path may be longer, so we retry until the returned string is # shorter than our buffer. name_len = actual_len = 130 while actual_len == name_len: name_len *= 2 name = create_unicode_buffer(name_len) actual_len = kernel32.GetModuleFileNameW(HANDLE(ucrtbased._handle), name, len(name)) if not actual_len: print('Failed to get full module name.') sys.exit(2) size = version.GetFileVersionInfoSizeW(name, None) if not size: print('Failed to get size of version info.') sys.exit(2) ver_block = c_buffer(size) if (not version.GetFileVersionInfoW(name, None, size, ver_block) or not ver_block): print('Failed to get version info.') sys.exit(2) pvi = POINTER(VS_FIXEDFILEINFO)() if not version.VerQueryValueW(ver_block, "", byref(pvi), byref(DWORD())): print('Failed to get version value from info.') sys.exit(2) ver = ( pvi.contents.dwProductVersionMS >> 16, pvi.contents.dwProductVersionMS & 0xFFFF, pvi.contents.dwProductVersionLS >> 16, pvi.contents.dwProductVersionLS & 0xFFFF, ) print('{} is version {}.{}.{}.{}'.format(name.value, *ver)) if ver < (10, 0, 10586): print('WARN: ucrtbased contains known issues. ' 'Please update the Windows 10 SDK.') print('See:') print(' http://bugs.python.org/issue27705') print(' https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk') sys.exit(1) |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |