Bagikan melalui


Fungsi SetFirmwareEnvironmentVariableExA (winbase.h)

Mengatur nilai variabel lingkungan firmware yang ditentukan sebagai atribut yang menunjukkan bagaimana variabel ini disimpan dan dipertahankan.

Sintaks

BOOL SetFirmwareEnvironmentVariableExA(
  [in] LPCSTR lpName,
  [in] LPCSTR lpGuid,
  [in] PVOID  pValue,
  [in] DWORD  nSize,
  [in] DWORD  dwAttributes
);

Parameter

[in] lpName

Nama variabel lingkungan firmware. Penunjuk tidak boleh NULL.

[in] lpGuid

GUID yang mewakili namespace variabel lingkungan firmware. GUID harus berupa string dalam format "{xxxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxx}". Jika sistem tidak mendukung namespace berbasis GUID, parameter ini diabaikan. Penunjuk tidak boleh NULL.

[in] pValue

Penunjuk ke nilai baru untuk variabel lingkungan firmware.

[in] nSize

Ukuran buffer pValue , dalam byte. Kecuali atribut variabel VARIABLE_ATTRIBUTE_APPEND_WRITE, VARIABLE_ATTRIBUTE_AUTHENTICATED_WRITE_ACCESS, atau VARIABLE_ATTRIBUTE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS diatur melalui dwAttributes, mengatur nilai ini ke nol akan menghasilkan penghapusan variabel ini.

[in] dwAttributes

Bitmask untuk mengatur atribut variabel UEFI yang terkait dengan variabel . Lihat juga UEFI Spec 2.3.1, Bagian 7.2.

Nilai Makna
VARIABLE_ATTRIBUTE_NON_VOLATILE
0x00000001
Variabel lingkungan firmware disimpan dalam memori non-volatil (misalnya NVRAM).
VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS
0x00000002
Variabel lingkungan firmware dapat diakses selama layanan boot.
VARIABLE_ATTRIBUTE_RUNTIME_ACCESS
0x00000004
Variabel lingkungan firmware dapat diakses saat runtime.
Catatan Variabel dengan set atribut ini, juga harus memiliki set VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS .
 
VARIABLE_ATTRIBUTE_HARDWARE_ERROR_RECORD
0x00000008
Menunjukkan kesalahan terkait perangkat keras yang ditemui saat runtime.
VARIABLE_ATTRIBUTE_AUTHENTICATED_WRITE_ACCESS
0x00000010
Menunjukkan persyaratan autentikasi yang harus dipenuhi sebelum menulis ke variabel lingkungan firmware ini. Untuk informasi selengkapnya, lihat spesifikasi UEFI 2.3.1.
VARIABLE_ATTRIBUTE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS
0x00000020
Menunjukkan persyaratan autentikasi dan stempel waktu yang harus dipenuhi sebelum menulis ke variabel lingkungan firmware ini. Ketika atribut ini diatur, buffer, yang diwakili oleh pValue, akan dimulai dengan instans deskriptor EFI_VARIABLE_AUTHENTICATION_2 lengkap (dan diserialisasikan). Untuk informasi selengkapnya, lihat spesifikasi UEFI 2.3.1.
VARIABLE_ATTRIBUTE_APPEND_WRITE
0x00000040
Tambahkan variabel lingkungan yang ada dengan nilai pValue. Jika firmware tidak mendukung operasi, SetFirmwareEnvironmentVariableEx akan mengembalikan ERROR_INVALID_FUNCTION.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah nilai bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Kemungkinan kode kesalahan termasuk ERROR_INVALID_FUNCTION.

Keterangan

Dimulai dengan Windows 10, versi 1803, aplikasi Universal Windows dapat membaca dan menulis variabel firmware UEFI. Lihat Mengakses variabel firmware UEFI dari Aplikasi Windows Universal untuk detailnya.

Dimulai dengan Windows 10, versi 1803, membaca variabel firmware UEFI juga didukung dari driver User-Mode Driver Framework (UMDF). Menulis variabel firmware UEFI dari driver UMDF tidak didukung.

Untuk menulis variabel lingkungan firmware, akun pengguna yang dijalankan aplikasi harus memiliki hak istimewa SE_SYSTEM_ENVIRONMENT_NAME . Aplikasi Universal Windows harus dijalankan dari akun administrator dan mengikuti persyaratan yang diuraikan dalam Mengakses variabel firmware UEFI dari Aplikasi Universal Windows.

Metode yang benar untuk mengubah atribut variabel adalah menghapus variabel dan membuatnya kembali dengan atribut yang berbeda.

Kumpulan variabel lingkungan firmware yang tepat ditentukan oleh firmware boot. Lokasi variabel lingkungan ini juga ditentukan oleh firmware. Misalnya, pada sistem berbasis UEFI, NVRAM berisi variabel lingkungan firmware yang menentukan pengaturan boot sistem. Untuk informasi tentang variabel tertentu yang digunakan, lihat spesifikasi UEFI. Untuk informasi selengkapnya tentang UEFI dan Windows, lihat UEFI dan Windows.

Variabel firmware tidak didukung pada sistem berbasis BIOS warisan. Fungsi SetFirmwareEnvironmentVariableEx akan selalu gagal pada sistem berbasis BIOS warisan, atau jika Windows diinstal menggunakan BIOS warisan pada sistem yang mendukung BIOS warisan dan UEFI. Untuk mengidentifikasi kondisi ini, panggil fungsi dengan nama lingkungan firmware dummy seperti string kosong ("") untuk parameter lpName dan GUID dummy seperti "{00000000-0000-0000-0000-000000000000}" untuk parameter lpGuid . Pada sistem berbasis BIOS warisan, atau pada sistem yang mendukung BIOS warisan dan UEFI di mana Windows diinstal menggunakan BIOS warisan, fungsi akan gagal dengan ERROR_INVALID_FUNCTION. Pada sistem berbasis UEFI, fungsi akan gagal dengan kesalahan khusus untuk firmware, seperti ERROR_NOACCESS, untuk menunjukkan bahwa namespace GUID dummy tidak ada.

Catatan

Header winbase.h mendefinisikan SetFirmwareEnvironmentVariableEx sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

   
Klien minimum yang didukung Windows 8 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

Mengakses variabel firmware UEFI dari Aplikasi Windows Universal

GetFirmwareEnvironmentVariableEx

SetFirmwareEnvironmentVariable