2014-11-05 78 views
0

我嘗試使用此代碼UEFI創建用戶

 Status = gBS->OpenProtocol(handles[i], &gEfiUserManagerProtocolGuid, (void **) &mUserManager, gImageHandle, NULL, EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL); 
    switch (Status) 
    { 
    case EFI_SUCCESS:   Print(L"OpenProtocol _____ OK!\n\r"); break; 
    case EFI_INVALID_PARAMETER: Print(L"OpenProtocol _____ EFI_INVALID_PARAMETER!\n\r"); break; 
    case EFI_UNSUPPORTED:  Print(L"OpenProtocol _____ EFI_UNSUPPORTED!\n\r");  break; 
    default:     Print(L"OpenProtocol _____ Status = %d \n\r",Status); break; 
    } 

    Status = mUserManager->Create(mUserManager, &User); 
    switch (Status) 
    { 
    case EFI_SUCCESS:   Print(L"Create _____ create successfully!\n\r"); break; 
    case EFI_ACCESS_DENIED:  Print(L"Create _____ EFI_ACCESS_DENIED!\n\r");  break; 
    case EFI_UNSUPPORTED:  Print(L"Create _____ EFI_UNSUPPORTED!\n\r");  break; 
    case EFI_INVALID_PARAMETER: Print(L"Create _____ EFI_INVALID_PARAMETER!\n\r"); break; 
    default:     Print(L"Create _____ Status = %d \n\r",Status); break; 
    } 

狀態返回EFI_SUCCESS,計算機去重啓。下一次我嘗試創建用戶,狀態返回EFI_ACCESS_DENIED。用戶資料存儲在哪裏?如何在第二時間創建用戶?

回答

0

我想你正在創建一個用戶權限有限,默認情況下不能創建任何其他用戶,這就是爲什麼你有EFI_ACCESS_DENIED作爲回報。

這裏是UEFI 2.4 Rev B specs相關的報價,1837年頁:

如果當前用戶配置文件不允許新的用戶配置文件,然後 EFI_ACCESS_DENIED將返回創作。如果不支持創建新用戶配置文件,則返回 EFI_UNSUPPORTED。

Here您可以找到使用您嘗試使用的協議的示例。

用戶配置文件存儲在非易失性存儲器中,必須防止被篡改,所以它是實現定義的東西,但我知道的所有實現都使用NVRAM。

+0

我從這個例子中粘貼我的代碼。在這個項目中調用VOID CallAddUser(VOID)函數。在338行狀態== EFI_ACCESS_DENIED。 – 2014-11-11 08:59:32