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