VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/MdePkg/Include/Protocol/RestJsonStructure.h

最後變更 在這個檔案是 99404,由 vboxsync 提交於 2 年 前

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

  • 屬性 svn:eol-style 設為 native
檔案大小: 6.1 KB
 
1/** @file
2 This file defines the EFI REST JSON Structure Protocol interface.
3
4 (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 @par Revision Reference:
9 This Protocol is introduced in UEFI Specification 2.8
10
11**/
12
13#ifndef EFI_REST_JSON_STRUCTURE_PROTOCOL_H_
14#define EFI_REST_JSON_STRUCTURE_PROTOCOL_H_
15
16///
17/// GUID definitions
18///
19#define EFI_REST_JSON_STRUCTURE_PROTOCOL_GUID \
20 { \
21 0xa9a048f6, 0x48a0, 0x4714, {0xb7, 0xda, 0xa9, 0xad,0x87, 0xd4, 0xda, 0xc9 } \
22 }
23
24typedef struct _EFI_REST_JSON_STRUCTURE_PROTOCOL EFI_REST_JSON_STRUCTURE_PROTOCOL;
25typedef CHAR8 *EFI_REST_JSON_RESOURCE_TYPE_DATATYPE;
26
27///
28/// Structure defintions of resource name space.
29///
30/// The fields declared in this structure define the
31/// name and revision of payload delievered throught
32/// REST API.
33///
34typedef struct _EFI_REST_JSON_RESOURCE_TYPE_NAMESPACE {
35 CHAR8 *ResourceTypeName; ///< Resource type name
36 CHAR8 *MajorVersion; ///< Resource major version
37 CHAR8 *MinorVersion; ///< Resource minor version
38 CHAR8 *ErrataVersion; ///< Resource errata version
39} EFI_REST_JSON_RESOURCE_TYPE_NAMESPACE;
40
41///
42/// REST resource type identifier
43///
44/// REST resource type consists of name space and data type.
45///
46typedef struct _EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER {
47 EFI_REST_JSON_RESOURCE_TYPE_NAMESPACE NameSpace; ///< Namespace of this resource type.
48 EFI_REST_JSON_RESOURCE_TYPE_DATATYPE DataType; ///< Name of data type declared in this
49 ///< resource type.
50} EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER;
51
52///
53/// List of JSON to C structure conversions which this convertor supports.
54///
55typedef struct _EFI_REST_JSON_STRUCTURE_SUPPORTED {
56 LIST_ENTRY NextSupportedRsrcInterp; ///< Linklist to next supported conversion.
57 EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER RestResourceInterp; ///< JSON resource type this convertor supports.
58} EFI_REST_JSON_STRUCTURE_SUPPORTED;
59
60///
61/// The header file of JSON C structure
62///
63typedef struct _EFI_REST_JSON_STRUCTURE_HEADER {
64 EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER JsonRsrcIdentifier; ///< Resource identifier which use to
65 ///< choice the proper interpreter.
66 ///< Follow by a pointer points to JSON structure, the content in the
67 ///< JSON structure is implementation-specific according to converter producer.
68 VOID *JsonStructurePointer;
69} EFI_REST_JSON_STRUCTURE_HEADER;
70
71/**
72 JSON-IN C Structure-OUT function. Convert the given REST JSON resource into structure.
73
74 @param[in] This This is the EFI_REST_JSON_STRUCTURE_PROTOCOL instance.
75 @param[in] JsonRsrcIdentifier This indicates the resource type and version is given in
76 ResourceJsonText.
77 @param[in] ResourceJsonText REST JSON resource in text format.
78 @param[out] JsonStructure Pointer to receive the pointer to EFI_REST_JSON_STRUCTURE_HEADER
79
80 @retval EFI_SUCCESS
81 @retval Others
82--*/
83typedef
84EFI_STATUS
85(EFIAPI *EFI_REST_JSON_STRUCTURE_TO_STRUCTURE)(
86 IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This,
87 IN EFI_REST_JSON_RESOURCE_TYPE_IDENTIFIER *JsonRsrcIdentifier OPTIONAL,
88 IN CHAR8 *ResourceJsonText,
89 OUT EFI_REST_JSON_STRUCTURE_HEADER **JsonStructure
90 );
91
92/**
93 Convert the given REST JSON structure into JSON text.
94
95 @param[in] This This is the EFI_REST_JSON_STRUCTURE_PROTOCOL instance.
96 @param[in] JsonStructureHeader The point to EFI_REST_JSON_STRUCTURE_HEADER structure.
97 @param[out] ResourceJsonText Pointer to receive REST JSON resource in text format.
98
99 @retval EFI_SUCCESS
100 @retval Others
101
102--*/
103typedef
104EFI_STATUS
105(EFIAPI *EFI_REST_JSON_STRUCTURE_TO_JSON)(
106 IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This,
107 IN EFI_REST_JSON_STRUCTURE_HEADER *JsonStructureHeader,
108 OUT CHAR8 **ResourceJsonText
109 );
110
111/**
112 This function destroys the REST JSON structure.
113
114 @param[in] This This is the EFI_REST_JSON_STRUCTURE_PROTOCOL instance.
115 @param[in] JsonStructureHeader JSON structure to destroy.
116
117 @retval EFI_SUCCESS
118 @retval Others
119
120--*/
121typedef
122EFI_STATUS
123(EFIAPI *EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE)(
124 IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This,
125 IN EFI_REST_JSON_STRUCTURE_HEADER *JsonStructureHeader
126 );
127
128/**
129 This function provides REST JSON resource to structure converter registration.
130
131 @param[in] This This is the EFI_REST_JSON_STRUCTURE_PROTOCOL instance.
132 @param[in] JsonStructureSupported The type and version of REST JSON resource which this converter
133 supports.
134 @param[in] ToStructure The function to convert REST JSON resource to structure.
135 @param[in] ToJson The function to convert REST JSON structure to JSON in text format.
136 @param[in] DestroyStructure Destroy REST JSON structure returned in ToStructure() function.
137
138 @retval EFI_SUCCESS Register successfully.
139 @retval Others Fail to register.
140
141--*/
142typedef
143EFI_STATUS
144(EFIAPI *EFI_REST_JSON_STRUCTURE_REGISTER)(
145 IN EFI_REST_JSON_STRUCTURE_PROTOCOL *This,
146 IN EFI_REST_JSON_STRUCTURE_SUPPORTED *JsonStructureSupported,
147 IN EFI_REST_JSON_STRUCTURE_TO_STRUCTURE ToStructure,
148 IN EFI_REST_JSON_STRUCTURE_TO_JSON ToJson,
149 IN EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE DestroyStructure
150 );
151
152///
153/// EFI REST JSON to C structure protocol definition.
154///
155struct _EFI_REST_JSON_STRUCTURE_PROTOCOL {
156 EFI_REST_JSON_STRUCTURE_REGISTER Register; ///< Register JSON to C structure convertor
157 EFI_REST_JSON_STRUCTURE_TO_STRUCTURE ToStructure; ///< The function to convert JSON to C structure
158 EFI_REST_JSON_STRUCTURE_TO_JSON ToJson; ///< The function to convert C structure to JSON
159 EFI_REST_JSON_STRUCTURE_DESTORY_STRUCTURE DestoryStructure; ///< Destory C structure.
160};
161
162#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette