Verwendung ein Festplatte > 130 GByte mit Windows XP SP1 oder Windows 2000
regedit / registry entry HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters\ add a new DWORD "EnableBigLba=1"
Verwendung ein Festplatte > 130 GByte mit Windows XP SP1 oder Windows 2000
regedit / registry entry HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters\ add a new DWORD "EnableBigLba=1"
MAP
ReFlex__OS(BYTE Extended=0),BYTE
MODULE('')
GetVersionEx(LONG),SIGNED,PASCAL,NAME('GetVersionExA'),PROC
END
END
ReFlex__OS FUNCTION(BYTE Extended=0)
!
! If NOT "Extended" return 0 = Win9x/ME, 1 = NT, 2 = W2K/Whistler(XP)
! If "Extended" return 1 = Win95, 2 = Win98, 3 = NT3.51, 4 = NT4, 5 = W2K, 6 = ME, 7 = Whistler(XP)
! Returns 255 on error
!
OSVersionInfo GROUP,PRE()
InfoSize ULONG
MajorVersion ULONG
MinorVersion ULONG
BuildNumber ULONG
PlatformID ULONG
CSDVersion STRING(128)
END
! OS MajorVersion MinorVersion PlatformID
! =====================================================
! Win95 4 0 1
! Win98 4 >0 1
! ME 4 90 1
! NT3.51 3 51 2
! NT4 4 0 2
! W2K 5 0 2
! Whistler(XP) 5 1 2
CODE
CLEAR(OSVersionInfo)
InfoSize = SIZE(OSVersionInfo)
IF NOT GetVersionEx(ADDRESS(OSVersionInfo)) THEN RETURN(255).
IF NOT Extended
RETURN( CHOOSE(PlatformID = 1, 0, CHOOSE(PlatformID = 2, CHOOSE(MajorVersion < 5, 1, 2), 255)) )
ELSE
IF MajorVersion = 4 AND MinorVersion = 90
RETURN(6)
ELSIF MajorVersion = 5 AND MinorVersion = 1
RETURN(7)
END
RETURN( CHOOSE(PlatformID = 1, CHOOSE(MinorVersion = 0, 1, 2), CHOOSE(PlatformID = 2, MajorVersion, 255)) )
END
prototype: api-function: GetVersionEx( *group), bool, pascal, raw, name('GetVersionExA')
procedure: GetWinVersion(), long
return: 0-error, 1-win32s, 2-win95, 3-win98, 4-nt4, 5-nt2000
code:
execute 1+ GetWinVersion()
s"= 'error in GetWinVersion'
s"= 'win32s'
s"= 'win95'
s"= 'win98'
s"= 'nt4'
s"= 'nt2000'
end
message( s")
definition:
GetWinVersion procedure
ret long, auto
tosvi group, type
dwOSVersionInfoSize ulong
dwMajorVersion ulong
dwMinorVersion ulong
dwBuildNumber ulong
dwPlatformId ulong
szCSDVersion cstring( 128)
end
osviex group, auto
osvi group( tosvi).
wServicePackMajor long
wServicePackMinor long
wSuiteMask long
wProductType byte
wReserved byte
end
code
ret= 0
clear( osviex, -1)
osviex.osvi.dwOSVersionInfoSize= size( osviex)
if not GetVersionEx( osviex)
osviex.osvi.dwOSVersionInfoSize= size( osviex.osvi)
if not GetVersionEx( osviex) then return ret.
end
execute 1+ osviex.osvi.dwPlatformId
do win32s
do win9x
do winnt
end
return( ret)
winnt routine
if osviex.osvi.dwMajorVersion <= 4
ret= 4
elsif osviex.osvi.dwMajorVersion = 5
ret= 5
end
win9x routine
if osviex.osvi.dwMajorVersion > 4 or |
( osviex.osvi.dwMajorVersion = 4 and osviex.osvi.dwMinorVersion >
0)
ret= 3
else
ret= 2
end
win32s routine
ret= 1
omit( '->')
---------------------------------------------------------------------------------------------
BOOL DisplaySystemVersion()
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;
// Try calling GetVersionEx using the OSVERSIONINFOEX structure,
// which is supported on Windows 2000.
//
// If that fails, try using the OSVERSIONINFO structure.
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
{
// If OSVERSIONINFOEX doesn't work, try OSVERSIONINFO.
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
return FALSE;
}
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
// Test for the product.
if ( osvi.dwMajorVersion <= 4 )
printf( "Microsoft Windows NT ");
if ( osvi.dwMajorVersion == 5 )
printf ("Microsoft Windows 2000 ");
// Test for workstation versus server.
if( bOsVersionInfoEx )
{
if ( osvi.wProductType == VER_NT_WORKSTATION )
printf ( "Professional " );
if ( osvi.wProductType == VER_NT_SERVER )
printf ( "Server " );
}
else
{
HKEY hKey;
char szProductType[80];
DWORD dwBufLen;
RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
RegQueryValueEx( hKey, "ProductType", NULL, NULL,
(LPBYTE) szProductType, &dwBufLen);
RegCloseKey( hKey );
if ( lstrcmpi( "WINNT", szProductType) == 0 )
printf( "Workstation " );
if ( lstrcmpi( "SERVERNT", szProductType) == 0 )
printf( "Server " );
}
// Display version, service pack (if any), and build number.
printf ("version %d.%d %s (Build %d)\n",
osvi.dwMajorVersion,
osvi.dwMinorVersion,
osvi.szCSDVersion,
osvi.dwBuildNumber & 0xFFFF);
break;
case VER_PLATFORM_WIN32_WINDOWS:
if ((osvi.dwMajorVersion > 4) ||
((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0)))
{
printf ("Microsoft Windows 98 ");
}
else printf ("Microsoft Windows 95 ");
break;
case VER_PLATFORM_WIN32s:
printf ("Microsoft Win32s ");
break;
}
return TRUE;
}