1pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
6 0x6302d008,
7 0x7f9b,
8 0x4f30,
9 0x87,
10 0xac,
11 &[0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e],
12);
13
14pub const MAJOR_VERSION: u32 = 0x00000002;
15pub const MINOR_VERSION: u32 = 0x00000002;
16
17pub type FileHandle = *mut core::ffi::c_void;
18
19pub type DeviceNameFlags = u32;
20pub const DEVICE_NAME_USE_COMPONENT_NAME: DeviceNameFlags = 0x00000001;
21pub const DEVICE_NAME_USE_DEVICE_PATH: DeviceNameFlags = 0x00000002;
22
23#[repr(C)]
24pub struct ListEntry {
25 pub flink: *mut ListEntry,
26 pub blink: *mut ListEntry,
27}
28
29#[repr(C)]
30pub struct FileInfo {
31 pub link: ListEntry,
32 pub status: crate::base::Status,
33 pub full_name: *mut crate::base::Char16,
34 pub file_name: *mut crate::base::Char16,
35 pub handle: FileHandle,
36 pub info: *mut crate::protocols::file::Info,
37}
38
39pub type Execute = eficall! {fn(
40 *mut crate::base::Handle,
41 *mut crate::base::Char16,
42 *mut *mut crate::base::Char16,
43 *mut crate::base::Status,
44) -> crate::base::Status};
45
46pub type GetEnv = eficall! {fn(
47 *mut crate::base::Char16,
48) -> *mut crate::base::Char16};
49
50pub type SetEnv = eficall! {fn(
51 *mut crate::base::Char16,
52 *mut crate::base::Char16,
53 crate::base::Boolean,
54) -> crate::base::Status};
55
56pub type GetAlias = eficall! {fn(
57 *mut crate::base::Char16,
58 *mut crate::base::Boolean,
59) -> *mut crate::base::Char16};
60
61pub type SetAlias = eficall! {fn(
62 *mut crate::base::Char16,
63 *mut crate::base::Char16,
64 crate::base::Boolean,
65 crate::base::Boolean,
66) -> crate::base::Status};
67
68pub type GetHelpText = eficall! {fn(
69 *mut crate::base::Char16,
70 *mut crate::base::Char16,
71 *mut *mut crate::base::Char16,
72) -> crate::base::Status};
73
74pub type GetDevicePathFromMap = eficall! {fn(
75 *mut crate::base::Char16,
76) -> *mut crate::protocols::device_path::Protocol};
77
78pub type GetMapFromDevicePath = eficall! {fn(
79 *mut *mut crate::protocols::device_path::Protocol,
80) -> *mut crate::base::Char16};
81
82pub type GetDevicePathFromFilePath = eficall! {fn(
83 *mut crate::base::Char16,
84) -> *mut crate::protocols::device_path::Protocol};
85
86pub type GetFilePathFromDevicePath = eficall! {fn(
87 *mut crate::protocols::device_path::Protocol,
88) -> *mut crate::base::Char16};
89
90pub type SetMap = eficall! {fn(
91 *mut crate::protocols::device_path::Protocol,
92 *mut crate::base::Char16,
93) -> crate::base::Status};
94
95pub type GetCurDir = eficall! {fn(
96 *mut crate::base::Char16,
97) -> *mut crate::base::Char16};
98
99pub type SetCurDir = eficall! {fn(
100 *mut crate::base::Char16,
101 *mut crate::base::Char16,
102) -> crate::base::Status};
103
104pub type OpenFileList = eficall! {fn(
105 *mut crate::base::Char16,
106 u64,
107 *mut *mut FileInfo,
108) -> crate::base::Status};
109
110pub type FreeFileList = eficall! {fn(
111 *mut *mut FileInfo,
112) -> crate::base::Status};
113
114pub type RemoveDupInFileList = eficall! {fn(
115 *mut *mut FileInfo,
116) -> crate::base::Status};
117
118pub type BatchIsActive = eficall! {fn() -> crate::base::Boolean};
119
120pub type IsRootShell = eficall! {fn() -> crate::base::Boolean};
121
122pub type EnablePageBreak = eficall! {fn()};
123
124pub type DisablePageBreak = eficall! {fn()};
125
126pub type GetPageBreak = eficall! {fn() -> crate::base::Boolean};
127
128pub type GetDeviceName = eficall! {fn(
129 crate::base::Handle,
130 DeviceNameFlags,
131 *mut crate::base::Char8,
132 *mut *mut crate::base::Char16,
133) -> crate::base::Status};
134
135pub type GetFileInfo = eficall! {fn(
136 FileHandle,
137) -> *mut crate::protocols::file::Info};
138
139pub type SetFileInfo = eficall! {fn(
140 FileHandle,
141 *mut crate::protocols::file::Info
142) -> crate::base::Status};
143
144pub type OpenFileByName = eficall! {fn(
145 *mut crate::base::Char16,
146 *mut FileHandle,
147 u64,
148) -> crate::base::Status};
149
150pub type CloseFile = eficall! {fn(
151 FileHandle,
152) -> crate::base::Status};
153
154pub type CreateFile = eficall! {fn(
155 *mut crate::base::Char16,
156 u64,
157 *mut FileHandle,
158) -> crate::base::Status};
159
160pub type ReadFile = eficall! {fn(
161 FileHandle,
162 *mut usize,
163 *mut core::ffi::c_void,
164) -> crate::base::Status};
165
166pub type WriteFile = eficall! {fn(
167 FileHandle,
168 *mut usize,
169 *mut core::ffi::c_void,
170) -> crate::base::Status};
171
172pub type DeleteFile = eficall! {fn(
173 FileHandle,
174) -> crate::base::Status};
175
176pub type DeleteFileByName = eficall! {fn(
177 *mut crate::base::Char16,
178) -> crate::base::Status};
179
180pub type GetFilePosition = eficall! {fn(
181 FileHandle,
182 *mut u64,
183) -> crate::base::Status};
184
185pub type SetFilePosition = eficall! {fn(
186 FileHandle,
187 u64,
188) -> crate::base::Status};
189
190pub type FlushFile = eficall! {fn(
191 FileHandle,
192) -> crate::base::Status};
193
194pub type FindFiles = eficall! {fn(
195 *mut crate::base::Char16,
196 *mut *mut FileInfo,
197) -> crate::base::Status};
198
199pub type FindFilesInDir = eficall! {fn(
200 FileHandle,
201 *mut *mut FileInfo,
202) -> crate::base::Status};
203
204pub type GetFileSize = eficall! {fn(
205 FileHandle,
206 *mut u64,
207) -> crate::base::Status};
208
209pub type OpenRoot = eficall! {fn(
210 *mut crate::protocols::device_path::Protocol,
211 *mut FileHandle,
212) -> crate::base::Status};
213
214pub type OpenRootByHandle = eficall! {fn(
215 crate::base::Handle,
216 *mut FileHandle,
217) -> crate::base::Status};
218
219pub type RegisterGuidName = eficall! {fn(
220 *mut crate::base::Guid,
221 *mut crate::base::Char16,
222) -> crate::base::Status};
223
224pub type GetGuidName = eficall! {fn(
225 *mut crate::base::Guid,
226 *mut *mut crate::base::Char16,
227) -> crate::base::Status};
228
229pub type GetGuidFromName = eficall! {fn(
230 *mut crate::base::Char16,
231 *mut crate::base::Guid,
232) -> crate::base::Status};
233
234pub type GetEnvEx = eficall! {fn(
235 *mut crate::base::Char16,
236 *mut u32,
237) -> *mut crate::base::Char16};
238
239#[repr(C)]
240pub struct Protocol {
241 pub execute: Execute,
242 pub get_env: GetEnv,
243 pub set_env: SetEnv,
244 pub get_alias: GetAlias,
245 pub set_alias: SetAlias,
246 pub get_help_text: GetHelpText,
247 pub get_device_path_from_map: GetDevicePathFromMap,
248 pub get_map_from_device_path: GetMapFromDevicePath,
249 pub get_device_path_from_file_path: GetDevicePathFromFilePath,
250 pub get_file_path_from_device_path: GetFilePathFromDevicePath,
251 pub set_map: SetMap,
252
253 pub get_cur_dir: GetCurDir,
254 pub set_cur_dir: SetCurDir,
255 pub open_file_list: OpenFileList,
256 pub free_file_list: FreeFileList,
257 pub remove_dup_in_file_list: RemoveDupInFileList,
258
259 pub batch_is_active: BatchIsActive,
260 pub is_root_shell: IsRootShell,
261 pub enable_page_break: EnablePageBreak,
262 pub disable_page_break: DisablePageBreak,
263 pub get_page_break: GetPageBreak,
264 pub get_device_name: GetDeviceName,
265
266 pub get_file_info: GetFileInfo,
267 pub set_file_info: SetFileInfo,
268 pub open_file_by_name: OpenFileByName,
269 pub close_file: CloseFile,
270 pub create_file: CreateFile,
271 pub read_file: ReadFile,
272 pub write_file: WriteFile,
273 pub delete_file: DeleteFile,
274 pub delete_file_by_name: DeleteFileByName,
275 pub get_file_position: GetFilePosition,
276 pub set_file_position: SetFilePosition,
277 pub flush_file: FlushFile,
278 pub find_files: FindFiles,
279 pub find_files_in_dir: FindFilesInDir,
280 pub get_file_size: GetFileSize,
281
282 pub open_root: OpenRoot,
283 pub open_root_by_handle: OpenRootByHandle,
284
285 pub execution_break: crate::base::Event,
286
287 pub major_version: u32,
288 pub minor_version: u32,
289 pub register_guid_name: RegisterGuidName,
290 pub get_guid_name: GetGuidName,
291 pub get_guid_from_name: GetGuidFromName,
292
293 pub get_env_ex: GetEnvEx,
295}