{$APPTYPE CONSOLE}
program BitFieldsSize;
type
_1bit = 0 .. $1;
_2bits = 0 .. $3;
_3bits = 0 .. $7;
_4bits = 0 .. $F;
_5bits = 0 .. $1F;
_6bits = 0 .. $3F;
_7bits = 0 .. $7F;
_8bits = 0 .. $FF; { byte }
_9bits = 0 .. $1FF;
_10bits = 0 .. $3FF;
_11bits = 0 .. $7FF;
_12bits = 0 .. $FFF;
_13bits = 0 .. $1FFF;
_14bits = 0 .. $3FFF;
_15bits = 0 .. $7FFF;
_16bits = 0 .. $FFFF; { word }
_17bits = 0 .. $1FFFF;
_18bits = 0 .. $3FFFF;
_19bits = 0 .. $7FFFF;
_20bits = 0 .. $FFFFF;
_21bits = 0 .. $1FFFFF;
_22bits = 0 .. $3FFFFF;
_23bits = 0 .. $7FFFFF;
_24bits = 0 .. $FFFFFF;
_25bits = 0 .. $1FFFFFF;
_26bits = 0 .. $3FFFFFF;
_27bits = 0 .. $7FFFFFF;
_28bits = 0 .. $FFFFFFF;
_29bits = 0 .. $1FFFFFFF;
_30bits = 0 .. $3FFFFFFF;
_31bits = 0 .. $7FFFFFFF;
_32bits = 0 .. $FFFFFFFF; { DWORD }
_33bits = 0 .. $1FFFFFFFF;
_34bits = 0 .. $3FFFFFFFF;
_35bits = 0 .. $7FFFFFFFF;
_36bits = 0 .. $FFFFFFFFF;
_37bits = 0 .. $1FFFFFFFFF;
_38bits = 0 .. $3FFFFFFFFF;
_39bits = 0 .. $7FFFFFFFFF;
_40bits = 0 .. $FFFFFFFFFF;
_41bits = 0 .. $1FFFFFFFFFF;
_42bits = 0 .. $3FFFFFFFFFF;
_43bits = 0 .. $7FFFFFFFFFF;
_44bits = 0 .. $FFFFFFFFFFF;
_45bits = 0 .. $1FFFFFFFFFFF;
_46bits = 0 .. $3FFFFFFFFFFF;
_47bits = 0 .. $7FFFFFFFFFFF;
_48bits = 0 .. $FFFFFFFFFFFF;
_49bits = 0 .. $1FFFFFFFFFFFF;
_50bits = 0 .. $3FFFFFFFFFFFF;
_51bits = 0 .. $7FFFFFFFFFFFF;
_52bits = 0 .. $FFFFFFFFFFFFF;
_53bits = 0 .. $1FFFFFFFFFFFFF;
_54bits = 0 .. $3FFFFFFFFFFFFF;
_55bits = 0 .. $7FFFFFFFFFFFFF;
_56bits = 0 .. $FFFFFFFFFFFFFF;
_57bits = 0 .. $1FFFFFFFFFFFFFF;
_58bits = 0 .. $3FFFFFFFFFFFFFF;
_59bits = 0 .. $7FFFFFFFFFFFFFF;
_60bits = 0 .. $FFFFFFFFFFFFFFF;
_61bits = 0 .. $1FFFFFFFFFFFFFFF;
_62bits = 0 .. $3FFFFFFFFFFFFFFF;
_63bits = 0 .. $7FFFFFFFFFFFFFFF;
const
QWORD_DEC_MAX = 18446744073709551615;
QWORD_HEX_MAX = qword($FFFFFFFFFFFFFFFF); // must typecast, otherwise error
type
_64bitsDec = 0..QWORD_DEC_MAX;
type
_64bitsHex = 0..QWORD_HEX_MAX;
type
{ _SYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION }
{ $f3 243 } { SystemTrustedAppsRuntimeInformation }
PSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION = ^TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION;
TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION = record
union : bitpacked record
case integer of
1 : (
Flags : qword;
);
2 : (
Supported : _2bits;
Spare : _62bits;
);
end;
{ removed this field to simplify }
end;
{$ifdef WIN32}
{ when compiling for 32 bit the following condition evaluates to FALSE }
{ which is incorrect. }
{$if sizeof(TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION) <> $8}
{$FATAL sizeof TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION does not equal $8}
{$endif}
{$endif}
{$ifdef WIN64}
{$if sizeof(TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION) <> $8}
{$FATAL sizeof TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION does not equal $8}
{$endif}
{$endif}
begin
writeln;
writeln(QWORD_DEC_MAX);
writeln(QWORD_HEX_MAX);
writeln;
if sizeof(pointer) = 4 then writeln('32 bit size') else writeln('64 bit size');
writeln;
writeln('sizeof TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION: ',
sizeof(TSYSTEM_TRUSTEDAPPS_RUNTIME_INFORMATION));
readln;
end.