123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /** @file
- This is definition for service binding for Hash driver.
- Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _HASH2_DRIVER_H_
- #define _HASH2_DRIVER_H_
- #include <Uefi.h>
- #include <Protocol/ServiceBinding.h>
- #include <Protocol/Hash2.h>
- #include <Library/BaseLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/DebugLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/UefiRuntimeServicesTableLib.h>
- #include <Library/DevicePathLib.h>
- #include <Library/UefiLib.h>
- #define HASH2_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('H', 'S', '2', 'S')
- typedef struct {
- UINT32 Signature;
- EFI_HANDLE ServiceHandle;
- EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
- LIST_ENTRY ChildrenList;
- } HASH2_SERVICE_DATA;
- #define HASH2_SERVICE_DATA_FROM_THIS(a) \
- CR ( \
- (a), \
- HASH2_SERVICE_DATA, \
- ServiceBinding, \
- HASH2_SERVICE_DATA_SIGNATURE \
- )
- #define HASH2_INSTANCE_DATA_SIGNATURE SIGNATURE_32 ('H', 's', '2', 'I')
- typedef struct {
- UINT32 Signature;
- HASH2_SERVICE_DATA *Hash2ServiceData;
- EFI_HANDLE Handle;
- LIST_ENTRY InstEntry;
- EFI_HASH2_PROTOCOL Hash2Protocol;
- VOID *HashContext;
- VOID *HashInfoContext;
- BOOLEAN Updated;
- } HASH2_INSTANCE_DATA;
- #define HASH2_INSTANCE_DATA_FROM_THIS(a) \
- CR ( \
- (a), \
- HASH2_INSTANCE_DATA, \
- Hash2Protocol, \
- HASH2_INSTANCE_DATA_SIGNATURE \
- )
- #define HASH2_INSTANCE_DATA_FROM_LINK(a) \
- CR ( \
- (a), \
- HASH2_INSTANCE_DATA, \
- InstEntry, \
- HASH2_INSTANCE_DATA_SIGNATURE \
- )
- /**
- Creates a child handle with a set of I/O services.
- @param[in] This Protocol instance pointer.
- @param[in, out] ChildHandle Pointer to the handle of the child to create. If
- it is NULL, then a new handle is created. If
- it is not NULL, then the I/O services are added
- to the existing child handle.
- @retval EFI_SUCCESS The protocol was added to ChildHandle.
- @retval EFI_INVALID_PARAMETER ChildHandle is NULL.
- @retval EFI_OUT_OF_RESOURCES There are not enough resources available to
- create the child.
- @retval Others The child handle was not created.
- **/
- EFI_STATUS
- EFIAPI
- Hash2ServiceBindingCreateChild (
- IN EFI_SERVICE_BINDING_PROTOCOL *This,
- IN OUT EFI_HANDLE *ChildHandle
- );
- /**
- Destroys a child handle with a set of I/O services.
- The DestroyChild() function does the opposite of CreateChild(). It removes a
- protocol that was installed by CreateChild() from ChildHandle. If the removed
- protocol is the last protocol on ChildHandle, then ChildHandle is destroyed.
- @param[in] This Pointer to the EFI_SERVICE_BINDING_PROTOCOL
- instance.
- @param[in] ChildHandle Handle of the child to destroy.
- @retval EFI_SUCCESS The protocol was removed from ChildHandle.
- @retval EFI_UNSUPPORTED ChildHandle does not support the protocol that
- is being removed.
- @retval EFI_INVALID_PARAMETER ChildHandle is NULL.
- @retval EFI_ACCESS_DENIED The protocol could not be removed from the
- ChildHandle because its services are being
- used.
- @retval Others The child handle was not destroyed.
- **/
- EFI_STATUS
- EFIAPI
- Hash2ServiceBindingDestroyChild (
- IN EFI_SERVICE_BINDING_PROTOCOL *This,
- IN EFI_HANDLE ChildHandle
- );
- extern EFI_HASH2_PROTOCOL mHash2Protocol;
- #endif
|