如何了解UEFI中的struct typedef组合?

时间:2018-07-23 04:13:06

标签: c uefi

在UefiSpec.h中,EFI_BOOTSERVICE如下所示:

///
/// EFI Boot Services Table.
///
typedef struct {
  ///
  /// The table header for the EFI Boot Services Table.
  ///
  EFI_TABLE_HEADER                Hdr;

  //
  // Task Priority Services
  //
  EFI_RAISE_TPL                   RaiseTPL;
  EFI_RESTORE_TPL                 RestoreTPL;

  //
  // Memory Services
  //
  EFI_ALLOCATE_PAGES              AllocatePages;
  EFI_FREE_PAGES                  FreePages;
  EFI_GET_MEMORY_MAP              GetMemoryMap;
  EFI_ALLOCATE_POOL               AllocatePool;
  EFI_FREE_POOL                   FreePool;
.
.
.
    } EFI_BOOT_SERVICES;

在EfiApi.h中,typedefstruct像这样:

typedef
EFI_BOOTSERVICE
EFI_STATUS
(EFIAPI *EFI_SET_WATCHDOG_TIMER) (
  IN UINTN                    Timeout,
  IN UINT64                   WatchdogCode,
  IN UINTN                    DataSize,
  IN CHAR16                   *WatchdogData OPTIONAL
  );

这是EFI_SET_WATCHDOG_TIMER的定义,是EFIAPI的函数指针还是EFI_STATUS的函数指针? 如何了解typedef

1 个答案:

答案 0 :(得分:2)

您的第一个代码引号与typedefs EFI_BOOT_SERVICES无关(请注意第二个代码段中缺少单数和下划线。)

EFI_SET_WATCHDOG_TIMER的类型定义为指向函数的指针,但是从您的帖子中不清楚它返回什么。