2 PCD Protocol

Summary

A platform database that contains a variety of current platform settings or directives that can be accessed by a driver or application.

GUID

#define PCD_PROTOCOL_GUID \
  { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7 }}

Protocol Interface Structure

typedef struct {
  PCD_PROTOCOL_SET_SKU              SetSku;

  PCD_PROTOCOL_GET8                 Get8;
  PCD_PROTOCOL_GET16                Get16;
  PCD_PROTOCOL_GET32                Get32;
  PCD_PROTOCOL_GET64                Get64;
  PCD_PROTOCOL_GET_POINTER          GetPtr;
  PCD_PROTOCOL_GET_BOOLEAN          GetBool;
  PCD_PROTOCOL_GET_SIZE             GetSize;

  PCD_PROTOCOL_GET_EX_8             Get8Ex;
  PCD_PROTOCOL_GET_EX_16            Get16Ex;
  PCD_PROTOCOL_GET_EX_32            Get32Ex;
  PCD_PROTOCOL_GET_EX_64            Get64Ex;
  PCD_PROTOCOL_GET_EX_POINTER       GetPtrEx;
  PCD_PROTOCOL_GET_EX_BOOLEAN       GetBoolEx;
  PCD_PROTOCOL_GET_EX_SIZE          GetSizeEx;

  PCD_PROTOCOL_SET8                 Set8;
  PCD_PROTOCOL_SET16                Set16;
  PCD_PROTOCOL_SET32                Set32;
  PCD_PROTOCOL_SET64                Set64;
  PCD_PROTOCOL_SET_POINTER          SetPtr;
  PCD_PROTOCOL_SET_BOOLEAN          SetBool;

  PCD_PROTOCOL_SET_EX_8             Set8Ex;
  PCD_PROTOCOL_SET_EX_16            Set16Ex;
  PCD_PROTOCOL_SET_EX_32            Set32Ex;
  PCD_PROTOCOL_SET_EX_64            Set64Ex;
  PCD_PROTOCOL_SET_EX_POINTER       SetPtrEx;
  PCD_PROTOCOL_SET_EX_BOOLEAN       SetBoolEx;

  PCD_PROTOCOL_CALLBACK_ON_SET      CallBackOnSet;
  PCD_PROTOCOL_CANCEL_CALLBACK      CancelCallBackOnSet;
  PCD_PROTOCOL_GET_NEXT_TOKEN       GetNextToken;
  PCD_PROTOCOL_GET_NEXT_TOKENSPACE  GetNextTokenSpace;
} PCD_PROTOCOL;

Parameters

SetSku

Establish a current SKU value for the PCD service to use for subsequent data Get/Set requests.

Get8

Retrieve an 8-bit value from the PCD service using the standard platform namespace.

Get16

Retrieve a 16-bit value from the PCD service using the standard platform namespace.

Get32

Retrieve a 32-bit value from the PCD service using the standard platform namespace.

Get64

Retrieve a 64-bit value from the PCD service using the standard platform namespace.

GetPtr

Retrieve a pointer to a value from the PCD service using the standard platform namespace. Can be used to retrieve an array of bytes that represent a data structure, ASCII string, or Unicode string

GetBool

Retrieve a Boolean value from the PCD service using the standard platform namespace.

GetSize

Retrieve the size of a particular PCD Token value using the standard platform namespace.

Get8Ex

Retrieve an 8-bit value from the PCD service using a GUIDed token namespace.

Get16Ex

Retrieve a 16-bit value from the PCD service using a GUIDed token namespace.

Get32Ex

Retrieve a 32-bit value from the PCD service using a GUIDed token namespace.

Get64Ex

Retrieve a 64-bit value from the PCD service using a GUIDed token namespace.

GetPtrEx

Retrieve a pointer to a value from the PCD service using a GUIDed token namespace. Can be used to retrieve an array of bytes that may represent a data structure, ASCII string, or Unicode string

GetBoolEx

Retrieve a Boolean value from the PCD service using a GUIDed token namespace.

GetSizeEx

Retrieve the size of a particular PCD Token value using a GUIDed token namespace.

Set8

Set an 8-bit value in the PCD service using the standard platform namespace.

Set16

Set a 16-bit value in the PCD service using the standard platform namespace.

Set32

Set a 32-bit value in the PCD service using the standard platform namespace.

Set64

Set a 64-bit value in the PCD service using the standard platform namespace.

SetPtr

Set a pointer to a value in the PCD service using the standard platform namespace. Can be used to set an array of bytes that may represent a data structure, ASCII string, or Unicode string

SetBool

Set a Boolean value in the PCD service using the standard platform namespace.

Set8Ex

Set an 8-bit value in the PCD service using a GUIDed token namespace.

Set16Ex

Set a 16-bit value in the PCD service using a GUIDed token namespace.

Set32Ex

Set a 32-bit value in the PCD service using a GUIDed token namespace.

Set64Ex

Set a 64-bit value in the PCD service using a GUIDed token namespace.

SetPtrEx

Set a pointer to a value in the PCD service using a GUIDed token namespace. Can be used to set an array of bytes that may represent a data structure, ASCII string, or Unicode string

SetBoolEx

Set a Boolean value in the PCD service using a GUIDed token namespace.

CallBackOnSet

Establish a notification to alert when a particular PCD Token value is set.

CancelCallBackOnSet

Cancel a previously set notification for a particular PCD Token value.

GetNextToken

Retrieve the next token number that is contained in the PCD name-space.

GetNextTokenSpace

Retrieves the next valid PCD token namespace for a given namespace.

Description

Callers to this protocol must be <= TPL_CALLBACK task priority level. This is the base PCD service API that provides an abstraction for accessing configuration content in the platform. It is a seamless mechanism for extracting information regardless of where the information is stored (such as in VPD, an EFI Variable, or a PCD FFS file,).

This protocol allows access to data through size-granular APIs and provides a mechanism for a firmware component to monitor specific settings and be alerted when a setting is changed.