127 lines
2 KiB
C
127 lines
2 KiB
C
/*++
|
||
|
||
Copyright (c) 1992 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
config.c
|
||
|
||
Abstract:
|
||
|
||
This module contains code for interpreting and manipulating the ARC
|
||
firmware configuration tree in various ways.
|
||
|
||
Author:
|
||
|
||
John Vert (jvert) 7-Oct-1993
|
||
|
||
Environment:
|
||
|
||
Runs in the ARC environment.
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
#include "setupldr.h"
|
||
#include "stdio.h"
|
||
|
||
#define MAX_FLOPPIES 4
|
||
|
||
PCONFIGURATION_COMPONENT_DATA FloppyData[MAX_FLOPPIES];
|
||
ULONG NumFloppies=0;
|
||
|
||
//
|
||
// definition for function callbacks
|
||
//
|
||
|
||
//
|
||
// Local prototypes
|
||
//
|
||
|
||
BOOLEAN
|
||
EnumerateFloppies(
|
||
IN PCONFIGURATION_COMPONENT_DATA ConfigData
|
||
);
|
||
|
||
|
||
|
||
BOOLEAN
|
||
SlFindFloppy(
|
||
IN ULONG FloppyNumber,
|
||
OUT PCHAR ArcName
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Given a floppy number (0, 1, etc.) this routine computes the appropriate
|
||
ARC name.
|
||
|
||
Arguments:
|
||
|
||
FloppyNumber - Supplies the floppy number.
|
||
|
||
ArcName - Returns the ARC name of the specified floppy device
|
||
|
||
Return Value:
|
||
|
||
TRUE - Floppy exists in the ARC firmware tree.
|
||
|
||
FALSE - Floppy was not found.
|
||
|
||
--*/
|
||
|
||
{
|
||
if (NumFloppies==0) {
|
||
BlSearchConfigTree(BlLoaderBlock->ConfigurationRoot,
|
||
PeripheralClass,
|
||
FloppyDiskPeripheral,
|
||
(ULONG)-1,
|
||
EnumerateFloppies);
|
||
}
|
||
|
||
if (FloppyNumber >= NumFloppies) {
|
||
SlFatalError(SL_FLOPPY_NOT_FOUND,NumFloppies,FloppyNumber);
|
||
}
|
||
|
||
BlGetPathnameFromComponent(FloppyData[FloppyNumber],
|
||
ArcName);
|
||
return(TRUE);
|
||
}
|
||
|
||
|
||
BOOLEAN
|
||
EnumerateFloppies(
|
||
IN PCONFIGURATION_COMPONENT_DATA ConfigData
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Callback routine for enumerating all the floppies in the ARC config tree.
|
||
|
||
Arguments:
|
||
|
||
ConfigData - Supplies a pointer to the floppies ARC component data.
|
||
|
||
Return Value:
|
||
|
||
TRUE - continue searching
|
||
|
||
FALSE - stop searching tree.
|
||
|
||
--*/
|
||
|
||
{
|
||
if (NumFloppies == MAX_FLOPPIES) {
|
||
return(FALSE);
|
||
}
|
||
|
||
FloppyData[NumFloppies++] = ConfigData;
|
||
|
||
return(TRUE);
|
||
}
|
||
|
||
|