Implement UWP version of OS.get_unique_id function.

This commit is contained in:
DylanCheetah
2023-03-20 14:00:48 -04:00
committed by Rémi Verschelde
parent e22335ec72
commit bc93cad7f9
3 changed files with 35 additions and 1 deletions

View File

@ -59,6 +59,8 @@ using namespace Windows::UI::ViewManagement;
using namespace Windows::Devices::Input;
using namespace Windows::Devices::Sensors;
using namespace Windows::ApplicationModel::DataTransfer;
using namespace Windows::System::Profile;
using namespace Windows::Storage::Streams;
using namespace concurrency;
int OS_UWP::get_video_driver_count() const {
@ -707,6 +709,36 @@ String OS_UWP::get_executable_path() const {
void OS_UWP::set_icon(const Ref<Image> &p_icon) {
}
String OS_UWP::get_unique_id() const {
// Get the hardware token and read it into an array of bytes.
HardwareToken ^ token = HardwareIdentification::GetPackageSpecificToken(nullptr);
IBuffer hwId = token->Id;
DataReader ^ dr = DataReader::FromBuffer(hwId);
uint8_t *data = new uint8_t[hwId->Length];
dr->ReadBytes(Platform::ArrayReference<uint8_t>(data, hwId->Length));
// Convert the byte array to hexadecimal.
String id;
char hexStr[3] = "00";
for (int i = 0; i < hwId->Length; i++) {
// Convert next byte to hexadecimal.
sprintf(hexStr, "%x", (int)data[i]);
if (data[i] < 16) {
hexStr[1] = hexStr[0];
hexStr[0] = '0';
}
// Add the next 2 hexits to the ID string.
id += hexStr;
}
// Free the temporary data array and return the device ID.
delete[] data;
return id;
}
bool OS_UWP::has_environment(const String &p_var) const {
return false;
};

View File

@ -217,6 +217,8 @@ public:
virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
void set_icon(const Ref<Image> &p_icon);
virtual String get_unique_id() const;
virtual String get_executable_path() const;
virtual String get_locale() const;