📄 mac.c
字号:
DefStartRec startupInfo;
DefVideoRec videoInfo;
DefOSRec osInfo;
XPPParamBlock appleTalkParams;
unsigned char *driverNames[] = {
"\p.AIn", "\p.AOut", "\p.AppleCD", "\p.ATP", "\p.BIn", "\p.BOut", "\p.MPP",
"\p.Print", "\p.Sony", "\p.Sound", "\p.XPP", NULL
};
SInt16 count, dummy, i, node, net, vRefNum, script;
SInt32 lcount, volume;
/* Get the current font family ID, node ID of the local AppleMumble
router, caret blink delay, CPU speed, double-click delay, sound
volume, application and system heap zone, the number of resource
types in the application, the number of sounds voices available,
the FRef of the current resource file, volume of the sysbeep,
primary line direction, computer SCSI disk mode ID, timeout before
the screen is dimmed and before the computer is put to sleep,
number of available threads in the thread pool, whether hard drive
spin-down is disabled, the handle to the i18n resources, timeout
time for the internal HDD, */
addRandomValue( randomState, GetAppFont() );
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
addRandomValue( randomState, GetBridgeAddress() );
#endif
addRandomValue( randomState, GetCaretTime() );
/* addRandomValue( randomState, GetCPUSpeed() ); */
addRandomValue( randomState, GetDblTime() );
GetSysBeepVolume( &volume );
addRandomValue( randomState, volume );
GetDefaultOutputVolume( &volume );
addRandomValue( randomState, volume );
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
addRandomValue( randomState, ApplicationZone() );
addRandomValue( randomState, SystemZone() );
#endif
addRandomValue( randomState, CountTypes() );
/* CountVoices( &count ); ** seems to crash
addRandomValue( randomState, count ); */
addRandomValue( randomState, CurResFile() );
GetSysBeepVolume( &lcount );
addRandomValue( randomState, lcount );
addRandomValue( randomState, GetSysDirection() );
/* addRandomValue( randomState, GetSCSIDiskModeAddress() );
addRandomValue( randomState, GetDimmingTimeout() );
addRandomValue( randomState, GetSleepTimeout() ); */
GetFreeThreadCount( kCooperativeThread, &count );
addRandomValue( randomState, count );
/* addRandomValue( randomState, IsSpindownDisabled() ); */
addRandomValue( randomState, GetIntlResource( 0 ) );
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
GetTimeout( &count );
addRandomValue( randomState, count );
#endif
/* Get the number of documents/files which were selected when the app
started and for each document get the vRefNum, name, type, and
version -- OBSOLETE
CountAppFiles( &dummy, &count );
addRandomValue( randomState, count );
while( count > 0 )
{
AppFile theFile;
GetAppFiles( count, &theFile );
addRandomData( randomState, &theFile, sizeof( AppFile ) );
count--;
} */
/* Get the app's name, resource file reference number, and handle to
the finder information -- OBSOLETE
GetAppParams( appName, appHandle, &count );
addRandomData( randomState, appName, sizeof( Str255 ) );
addRandomValue( randomState, appHandle );
addRandomValue( randomState, count ); */
/* Get all sorts of statistics such as physical information, disk and
write-protect present status, error status, and handler queue
information, on floppy drives attached to the system. Also get
the volume name, volume reference number and number of bytes free,
for the volume in the drive */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( !DriveStatus( 1, &driveStatus ) )
addRandomData( randomState, &driveStatus, sizeof (DrvSts) );
#endif
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( !GetVInfo( 1, volName, &vRefNum, &lcount ) )
{
addRandomData( randomState, volName, sizeof( Str255 ) );
addRandomValue( randomState, vRefNum );
addRandomValue( randomState, lcount );
}
#endif
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( !DriveStatus( 2, &driveStatus ) )
addRandomData( randomState, &driveStatus, sizeof (DrvSts) );
#endif
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( !GetVInfo( 2, volName, &vRefNum, &lcount ) )
{
addRandomData( randomState, volName, sizeof( Str255 ) );
addRandomValue( randomState, vRefNum );
addRandomValue( randomState, lcount );
}
#endif
/* Get information on the head and tail of the vertical retrace
queue */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( ( vblQueue = GetVBLQHdr() ) != NULL )
addRandomData( randomState, vblQueue, sizeof( QHdr ) );
#endif
/* Get the parameter RAM settings */
pramPtr = GetSysPPtr();
addRandomData( randomState, pramPtr, sizeof( SysParmType ) );
/* Get information about the machines geographic location */
ReadLocation( &machineLocation );
addRandomData( randomState, &machineLocation,
sizeof( MachineLocation ) );
/* Get information on current graphics devices including device
information such as dimensions and cursor information, and a
number of handles to device-related data blocks and functions, and
information about the dimentions and contents of the devices pixel
image as well as the images resolution, storage format, depth, and
colour usage */
deviceHandle = GetDeviceList();
do
{
GDPtr gdPtr;
addRandomValue( randomState, deviceHandle );
HLock( ( Handle ) deviceHandle );
gdPtr = ( GDPtr ) *deviceHandle;
addRandomData( randomState, gdPtr, sizeof( GDevice ) );
addRandomData( randomState, gdPtr->gdPMap, sizeof( PixMap ) );
HUnlock( ( Handle ) deviceHandle );
}
while( ( deviceHandle = GetNextDevice( deviceHandle ) ) != NULL );
/* Get the current system environment, including the machine and
system software type, the keyboard type, where there's a colour
display attached, the AppleTalk driver version, and the VRefNum of
the system folder */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
SysEnvirons( curSysEnvVers, &sysEnvirons );
addRandomData( randomState, &sysEnvirons, sizeof( SysEnvRec ) );
#endif
/* Get the AppleTalk node ID and network number for this machine */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( GetNodeAddress( &node, &net ) )
{
addRandomValue( randomState, node );
addRandomValue( randomState, net );
}
#endif
/* Get information on each device connected to the ADB including the
device handler ID, the devices ADB address, and the address of the
devices handler and storage area */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
count = CountADBs();
while( count-- > 0 )
{
ADBDataBlock adbInfo;
GetIndADB( &adbInfo, count );
addRandomData( randomState, &adbInfo, sizeof( ADBDataBlock ) );
}
#endif
/* Open the most common device types and get the general device
status information and (if possible) device-specific status. The
general device information contains the device handle and flags,
I/O queue information, event information, and other driver-related
details */
/* Try something like this again.. and ur a dead man, Peter ;-)
-xmath */
/* for( count = 0; driverNames[ count ] != NULL; count++ )
{
AuxDCEHandle dceHandle;
short driverRefNum;
** Try and open the driver **
if( OpenDriver( driverNames[ count ], &driverRefNum ) )
continue;
** Get a handle to the driver control information (this could
also be done with GetDCtlHandle()) **
Status( driverRefNum, 1, &dceHandle );
HLock( dceHandle );
addRandomData( randomState, *dceHandle,
sizeof( AuxDCE ) );
HUnlock( dceHandle );
CloseDriver( driverRefNum );
} */
/* Get the name and volume reference number for the current volume */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
GetVol( volName, &vRefNum );
addRandomData( randomState, volName, sizeof( Str255 ) );
addRandomValue( randomState, vRefNum );
#endif
/* Get the time information, attributes, directory information and
bitmap, volume allocation information, volume and drive
information, pointers to various pieces of volume-related
information, and details on path and directory caches, for each
volume */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( ( queueHdr = GetVCBQHdr() ) != NULL )
queuePtr = queueHdr->qHead;
while ( queuePtr != NULL )
{
addRandomData( randomState, queuePtr, sizeof( VCB ) );
queuePtr = queuePtr->qLink;
}
#endif
/* Get the driver reference number, FS type, and media size for each
drive */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
if( ( queueHdr = GetDrvQHdr() ) != NULL )
queuePtr = queueHdr->qHead;
while ( queuePtr != NULL )
{
addRandomData( randomState, queuePtr, sizeof( DrvQEl ) );
queuePtr = queuePtr->qLink;
}
#endif
/* Get global script manager variables and vectors, including the
globals changed count, font, script, and i18n flags, various
script types, and cache information */
for( count = 0; count < 30; count++ )
addRandomValue( randomState, GetScriptManagerVariable( count ) );
/* Get the script code for the font script the i18n script, and for
each one add the changed count, font, script, i18n, and display
flags, resource ID's, and script file information */
script = FontScript();
addRandomValue( randomState, script );
for( count = 0; count < 30; count++ )
addRandomValue( randomState, GetScriptVariable( script, count ) );
script = IntlScript();
addRandomValue( randomState, script );
for( count = 0; count < 30; count++ )
addRandomValue( randomState, GetScriptVariable( script, count ) );
/* Get the device ID, partition, slot number, resource ID, and driver
reference number for the default startup device */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
GetDefaultStartup( &startupInfo );
addRandomData( randomState, &startupInfo, sizeof( DefStartRec ) );
#endif
/* Get the slot number and resource ID for the default video device */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
GetVideoDefault( &videoInfo );
addRandomData( randomState, &videoInfo, sizeof( DefVideoRec ) );
#endif
/* Get the default OS type */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
GetOSDefault( &osInfo );
addRandomData( randomState, &osInfo, sizeof( DefOSRec ) );
#endif
/* Get the AppleTalk command block and data size and number of
sessions */
#if !defined CALL_NOT_IN_CARBON || CALL_NOT_IN_CARBON
ASPGetParms( &appleTalkParams, FALSE );
addRandomData( randomState, &appleTalkParams,
sizeof( XPPParamBlock ) );
#endif
addedFixedItems = TRUE;
}
/* Flush any remaining data through */
endRandomData( randomState, 100 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -