Type Function ServiceBinding [src]
Alias for std.os.uefi.protocol.service_binding.ServiceBinding
Prototype
pub fn ServiceBinding(service_guid: Guid) type Parameters
service_guid: Guid Source
pub fn ServiceBinding(service_guid: Guid) type {
return struct {
const Self = @This();
_create_child: *const fn (*Self, *?Handle) callconv(cc) Status,
_destroy_child: *const fn (*Self, Handle) callconv(cc) Status,
pub const CreateChildError = uefi.UnexpectedError || error{
InvalidParameter,
OutOfResources,
} || Error;
pub const DestroyChildError = uefi.UnexpectedError || error{
Unsupported,
InvalidParameter,
AccessDenied,
} || Error;
/// To add this protocol to an existing handle, use `addToHandle` instead.
pub fn createChild(self: *Self) CreateChildError!Handle {
var handle: ?Handle = null;
switch (self._create_child(self, &handle)) {
.success => return handle orelse error.Unexpected,
else => |status| {
try status.err();
return uefi.unexpectedStatus(status);
},
}
}
pub fn addToHandle(self: *Self, handle: Handle) CreateChildError!void {
switch (self._create_child(self, @ptrCast(@constCast(&handle)))) {
.success => {},
else => |status| {
try status.err();
return uefi.unexpectedStatus(status);
},
}
}
pub fn destroyChild(self: *Self, handle: Handle) DestroyChildError!void {
switch (self._destroy_child(self, handle)) {
.success => {},
else => |status| {
try status.err();
return uefi.unexpectedStatus(status);
},
}
}
pub const guid align(8) = service_guid;
};
}