09:53 Getting the protocol handle will be something like this 09:53 EFI_GUID RngProtocol = EFI_RNG_PROTOCOL_GUID; 09:53 EFI_RNG_PROTOCOL rng; 09:53 EFI_STATUS status; 09:53 EFI_HANDLE rng_handle; 09:53 UINTN nrng_handle; 09:53 status = LibLocateHandle(ByProtocol, &RngProtocol, NULL, &nrng_handle, &rng_handle); 09:53 if (EFI_ERROR(status) || nrng_handle == 0) // No RNG support 09:53 ?return; 09:53 status = uefi_call_wrapper(BS->HandleProtocol, 3, rng_handle[0], &RngProtocol, (void **)&rng); 09:53 if (EFI_ERROR(status)) 09:53 ?return; 09:53 Then function calls will be like 09:53 EFI_RNG_ALGORITHM alg[SIZE]; 09:53 UINTN algsz = sizeof(alg); 09:54 status = uefi_call_wrapper(rng->GetInfo, 3, rng, &algsz, alg); 09:54 altho I tihnk there is an easier way.. 09:55 maybe status = LibLocateProtocol(&RngProtocol, (void **)&rng); 09:55 Yeah, LibLocateProtocol returns the first handle 09:56 So only one line of code!