Fungsi ExGetFirmwareEnvironmentVariable (wdm.h)

Rutinitas ExGetFirmwareEnvironmentVariable mendapatkan nilai variabel lingkungan firmware sistem yang ditentukan.

Sintaks

NTSTATUS ExGetFirmwareEnvironmentVariable(
  [in]            PUNICODE_STRING VariableName,
  [in]            LPGUID          VendorGuid,
  [out, optional] PVOID           Value,
  [in, out]       PULONG          ValueLength,
  [out, optional] PULONG          Attributes
);

Parameter

[in] VariableName

Penunjuk ke struktur UNICODE_STRING yang berisi nama variabel lingkungan yang ditentukan.

[in] VendorGuid

Pointer ke GUID yang mengidentifikasi vendor yang terkait dengan variabel lingkungan yang ditentukan. Variabel lingkungan dikelompokkan ke dalam namespace berdasarkan GUID vendor mereka. Beberapa platform perangkat keras mungkin tidak mendukung GUID vendor. Pada platform ini, semua variabel dikelompokkan ke dalam satu, namespace umum, dan parameter VendorGuid diabaikan.

[out, optional] Value

Penunjuk ke buffer yang dialokasikan penelepon tempat rutin menulis nilai variabel lingkungan yang ditentukan.

[in, out] ValueLength

Penunjuk ke lokasi yang berisi ukuran buffer. Pada entri, lokasi yang diacu oleh parameter ini berisi ukuran, dalam byte, dari buffer Nilai yang disediakan pemanggil. Sebelum keluar, rutin menulis ke lokasi ini ukuran, dalam byte, dari nilai variabel. Jika rutin mengembalikan STATUS_SUCCESS, nilai output *ValueLength adalah jumlah byte data yang ditulis ke penyangga Nilai . Jika rutinitas mengembalikan STATUS_BUFFER_TOO_SMALL, *ValueLength adalah ukuran buffer yang diperlukan.

[out, optional] Attributes

Penunjuk ke lokasi di mana rutinitas menulis atribut variabel lingkungan yang ditentukan. Parameter ini bersifat opsional dan dapat diatur ke NULL jika pemanggil tidak memerlukan atribut . Untuk informasi selengkapnya, lihat Keterangan.

Nilai kembali

ExGetFirmwareEnvironmentVariable mengembalikan STATUS_SUCCESS jika berhasil. Nilai yang mungkin dikembalikan termasuk kode status kesalahan berikut.

Menampilkan kode Deskripsi
STATUS_INSUFFICIENT_RESOURCES Sumber daya sistem yang tersedia tidak cukup untuk menyelesaikan operasi yang diminta.
STATUS_BUFFER_TOO_SMALL Buffer Nilai terlalu kecil.
STATUS_VARIABLE_NOT_FOUND Variabel yang diminta tidak ada.
STATUS_INVALID_PARAMETER Salah satu parameter tidak valid.
STATUS_NOT_IMPLEMENTED Rutinitas ini tidak didukung pada platform ini.
STATUS_UNSUCCESSFUL Firmware mengembalikan kesalahan yang tidak dikenali.

Keterangan

Variabel lingkungan firmware sistem berisi nilai data yang diteruskan antara lingkungan firmware boot yang diterapkan di platform perangkat keras dan loader sistem operasi dan perangkat lunak lain yang berjalan di lingkungan firmware.

Set variabel lingkungan firmware yang tersedia di platform perangkat keras tergantung pada firmware boot. Lokasi variabel lingkungan ini juga ditentukan oleh firmware. Misalnya, pada platform berbasis UEFI, NVRAM berisi variabel lingkungan firmware yang menentukan pengaturan boot sistem. Untuk informasi tentang variabel tertentu yang digunakan, lihat Spesifikasi Antarmuka Firmware Unified Extensible di situs web UEFI . Untuk informasi selengkapnya tentang UEFI dan Windows, lihat UEFI dan Windows.

Variabel lingkungan firmware tidak didukung pada platform berbasis BIOS warisan. Panggilan ke ExGetFirmwareEnvironmentVariable selalu gagal pada platform berbasis BIOS warisan; mereka juga gagal jika Windows diinstal menggunakan BIOS warisan pada platform yang mendukung BIOS warisan dan UEFI. Untuk mengidentifikasi kondisi ini, pertama-tama gunakan uuidgen atau alat serupa untuk menghasilkan GUID unik acak secara statis. Kemudian panggil rutinitas ini untuk mencari nama variabel tertentu, dengan menyediakan GUID tersebut sebagai parameter VendorGuid .

Pada platform berbasis BIOS warisan, atau pada platform yang mendukung BIOS warisan dan UEFI tetapi di mana Windows diinstal menggunakan BIOS warisan, fungsi akan gagal dengan STATUS_NOT_IMPLEMENTED. Pada platform berbasis UEFI, fungsi akan gagal dengan kesalahan khusus untuk firmware, seperti STATUS_VARIABLE_NOT_FOUND, untuk menunjukkan bahwa namespace GUID dummy tidak ada.

Jika pemanggil menentukan parameter Atribut non-NULL, rutin menulis atribut variabel lingkungan firmware sistem yang ditentukan ke lokasi yang ditujukan oleh Atribut. Spesifikasi UEFI versi 2.3.1 menentukan atribut berikut untuk variabel lingkungan firmware.

Nama variabel Nilai
EFI_VARIABLE_NON_VOLATILE 0x00000001
EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010
EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020
EFI_VARIABLE_APPEND_WRITE 0x00000040

Nilai atribut ini didefinisikan sebagai bit bendera. Nilai yang ditulis ke variabel ULONG yang ditunjukkan oleh Atribut adalah nol atau bitwise ATAU dari satu atau beberapa atribut dalam tabel sebelumnya. Untuk informasi selengkapnya, lihat spesifikasi UEFI di situs web UEFI .

Jika Anda membuat datastore cadangan, Anda dapat menggunakan fungsi ini untuk menyimpan semua pengaturan boot untuk platform sehingga dapat dipulihkan dengan memanggil rutin ExSetFirmwareEnvironmentVariable jika diperlukan.

ExGetFirmwareEnvironmentVariable adalah mode kernel yang setara dengan fungsi Win32 GetFirmwareEnvironmentVariable .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Lihat juga

ExSetFirmwareEnvironmentVariable

GetFirmwareEnvironmentVariable

UNICODE_STRING