mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-31 01:24:12 +02:00
The implementation of Consplitter driver should check the child handle to follow UEFI spec.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4657 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
7221595471
commit
b71f6b3c0a
@ -234,6 +234,65 @@ ConSplitterComponentNameGetDriverName (
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Tests whether a controller handle is being managed by a specific driver and
|
||||||
|
the child handle is a child device of the controller.
|
||||||
|
|
||||||
|
@param ControllerHandle A handle for a controller to test.
|
||||||
|
@param DriverBindingHandle Specifies the driver binding handle for the
|
||||||
|
driver.
|
||||||
|
@param ProtocolGuid Specifies the protocol that the driver specified
|
||||||
|
by DriverBindingHandle opens in its Start()
|
||||||
|
function.
|
||||||
|
@param ChildHandle A child handle to test.
|
||||||
|
@param ConsumsedGuid Supplies the protocol that the child controller
|
||||||
|
opens on its parent controller.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS ControllerHandle is managed by the driver
|
||||||
|
specifed by DriverBindingHandle and ChildHandle
|
||||||
|
is a child of the ControllerHandle.
|
||||||
|
@retval EFI_UNSUPPORTED ControllerHandle is not managed by the driver
|
||||||
|
specifed by DriverBindingHandle.
|
||||||
|
@retval EFI_UNSUPPORTED ChildHandle is not a child of the
|
||||||
|
ControllerHandle.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
ConSplitterTestControllerHandles (
|
||||||
|
IN CONST EFI_HANDLE ControllerHandle,
|
||||||
|
IN CONST EFI_HANDLE DriverBindingHandle,
|
||||||
|
IN CONST EFI_GUID *ProtocolGuid,
|
||||||
|
IN EFI_HANDLE ChildHandle,
|
||||||
|
IN CONST EFI_GUID *ConsumsedGuid
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
//
|
||||||
|
// here ChildHandle is not an Optional parameter.
|
||||||
|
//
|
||||||
|
if (ChildHandle == NULL) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = EfiTestManagedDevice (
|
||||||
|
ControllerHandle,
|
||||||
|
DriverBindingHandle,
|
||||||
|
ProtocolGuid
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = EfiTestChildHandle (
|
||||||
|
ControllerHandle,
|
||||||
|
ChildHandle,
|
||||||
|
ConsumsedGuid
|
||||||
|
);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Retrieves a Unicode string that is the user readable name of the controller
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
that is being managed by a driver.
|
that is being managed by a driver.
|
||||||
@ -313,24 +372,16 @@ ConSplitterConInComponentNameGetControllerName (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn;
|
|
||||||
//
|
|
||||||
// here ChildHandle is not an Optional parameter.
|
|
||||||
//
|
|
||||||
if (ChildHandle == NULL) {
|
|
||||||
return EFI_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = gBS->OpenProtocol (
|
Status = ConSplitterTestControllerHandles (
|
||||||
ControllerHandle,
|
ControllerHandle,
|
||||||
&gEfiSimpleTextInProtocolGuid,
|
gConSplitterConInDriverBinding.DriverBindingHandle,
|
||||||
(VOID **) &TextIn,
|
&gEfiSimpleTextInProtocolGuid,
|
||||||
NULL,
|
ChildHandle,
|
||||||
ControllerHandle,
|
&gEfiConsoleInDeviceGuid
|
||||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
);
|
||||||
);
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return EFI_UNSUPPORTED;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
return LookupUnicodeString2 (
|
return LookupUnicodeString2 (
|
||||||
@ -421,24 +472,16 @@ ConSplitterSimplePointerComponentNameGetControllerName (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer;
|
|
||||||
//
|
|
||||||
// here ChildHandle is not an Optional parameter.
|
|
||||||
//
|
|
||||||
if (ChildHandle == NULL) {
|
|
||||||
return EFI_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = gBS->OpenProtocol (
|
Status = ConSplitterTestControllerHandles (
|
||||||
ControllerHandle,
|
ControllerHandle,
|
||||||
&gEfiSimplePointerProtocolGuid,
|
gConSplitterSimplePointerDriverBinding.DriverBindingHandle,
|
||||||
(VOID **) &SimplePointer,
|
&gEfiSimplePointerProtocolGuid,
|
||||||
NULL,
|
ChildHandle,
|
||||||
ControllerHandle,
|
&gEfiSimplePointerProtocolGuid
|
||||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
);
|
||||||
);
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return EFI_UNSUPPORTED;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
return LookupUnicodeString2 (
|
return LookupUnicodeString2 (
|
||||||
@ -506,33 +549,25 @@ ConSplitterAbsolutePointerComponentNameGetControllerName (
|
|||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer;
|
|
||||||
//
|
|
||||||
// here ChildHandle is not an Optional parameter.
|
|
||||||
//
|
|
||||||
if (ChildHandle == NULL) {
|
|
||||||
return EFI_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = gBS->OpenProtocol (
|
Status = ConSplitterTestControllerHandles (
|
||||||
ControllerHandle,
|
ControllerHandle,
|
||||||
&gEfiAbsolutePointerProtocolGuid,
|
gConSplitterAbsolutePointerDriverBinding.DriverBindingHandle,
|
||||||
(VOID **) &AbsolutePointer,
|
&gEfiAbsolutePointerProtocolGuid,
|
||||||
NULL,
|
ChildHandle,
|
||||||
ControllerHandle,
|
&gEfiAbsolutePointerProtocolGuid
|
||||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
);
|
||||||
);
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return EFI_UNSUPPORTED;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
return LookupUnicodeString2 (
|
return LookupUnicodeString2 (
|
||||||
Language,
|
Language,
|
||||||
This->SupportedLanguages,
|
This->SupportedLanguages,
|
||||||
mConSplitterAbsolutePointerControllerNameTable,
|
mConSplitterAbsolutePointerControllerNameTable,
|
||||||
ControllerName,
|
ControllerName,
|
||||||
(BOOLEAN)(This == &gConSplitterAbsolutePointerComponentName)
|
(BOOLEAN)(This == &gConSplitterAbsolutePointerComponentName)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -614,24 +649,16 @@ ConSplitterConOutComponentNameGetControllerName (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;
|
|
||||||
//
|
|
||||||
// here ChildHandle is not an Optional parameter.
|
|
||||||
//
|
|
||||||
if (ChildHandle == NULL) {
|
|
||||||
return EFI_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = gBS->OpenProtocol (
|
Status = ConSplitterTestControllerHandles (
|
||||||
ControllerHandle,
|
ControllerHandle,
|
||||||
&gEfiSimpleTextOutProtocolGuid,
|
gConSplitterConOutDriverBinding.DriverBindingHandle,
|
||||||
(VOID **) &TextOut,
|
&gEfiSimpleTextOutProtocolGuid,
|
||||||
NULL,
|
ChildHandle,
|
||||||
ControllerHandle,
|
&gEfiConsoleOutDeviceGuid
|
||||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
);
|
||||||
);
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return EFI_UNSUPPORTED;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
return LookupUnicodeString2 (
|
return LookupUnicodeString2 (
|
||||||
@ -722,24 +749,16 @@ ConSplitterStdErrComponentNameGetControllerName (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ErrOut;
|
|
||||||
//
|
|
||||||
// here ChildHandle is not an Optional parameter.
|
|
||||||
//
|
|
||||||
if (ChildHandle == NULL) {
|
|
||||||
return EFI_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
Status = gBS->OpenProtocol (
|
Status = ConSplitterTestControllerHandles (
|
||||||
ControllerHandle,
|
ControllerHandle,
|
||||||
&gEfiSimpleTextOutProtocolGuid,
|
gConSplitterStdErrDriverBinding.DriverBindingHandle,
|
||||||
(VOID **) &ErrOut,
|
&gEfiSimpleTextOutProtocolGuid,
|
||||||
NULL,
|
ChildHandle,
|
||||||
ControllerHandle,
|
&gEfiStandardErrorDeviceGuid
|
||||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
);
|
||||||
);
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return EFI_UNSUPPORTED;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
return LookupUnicodeString2 (
|
return LookupUnicodeString2 (
|
||||||
|
@ -48,6 +48,7 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;
|
|||||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;
|
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;
|
||||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;
|
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;
|
||||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;
|
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;
|
||||||
|
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding;
|
||||||
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;
|
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;
|
||||||
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;
|
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;
|
||||||
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;
|
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user