HardwareIdentification Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Provides the ability to obtain a hardware identifier that represents the current hardware.
public ref class HardwareIdentification abstract sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.System.Profile.ProfileHardwareTokenContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
class HardwareIdentification final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.System.Profile.ProfileHardwareTokenContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
public static class HardwareIdentification
Public Class HardwareIdentification
- Inheritance
- Attributes
Windows requirements
Device family |
Windows Desktop Extension SDK (introduced in 10.0.10240.0)
Windows Mobile Extension SDK (introduced in 10.0.10240.0) Windows 10 Anniversary Edition (introduced in 10.0.14393.0) |
API contract |
Windows.System.Profile.ProfileHardwareTokenContract (introduced in v1.0)
|
Examples
The following code shows how to get the hardware id of a device using GetPackageSpecificToken.
// nonce is an IBuffer object that would be sent from the cloud service.
HardwareToken packageSpecificToken;
packageSpecificToken = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(nonce);
// hardware id, signature, certificate IBuffer objects
// that can be accessed through properties.
IBuffer hardwareId = packageSpecificToken.Id;
IBuffer signature = packageSpecificToken.Signature;
IBuffer certificate = packageSpecificToken.Certificate;
void MainPage::DefaultLaunch()
{
// nonce is a value of type Windows::Storage::Streams::IBuffer, which
// would be sent from the cloud service in a real scenario.
Windows::System::Profile::HardwareToken packageSpecificToken{
Windows::System::Profile::HardwareIdentification::GetPackageSpecificToken(nonce) };
// hardware id, signature, certificate IBuffer objects
// that can be accessed through properties.
Windows::Storage::Streams::IBuffer hardwareId{ packageSpecificToken.Id() };
Windows::Storage::Streams::IBuffer signature{ packageSpecificToken.Signature() };
Windows::Storage::Streams::IBuffer certificate{ packageSpecificToken.Certificate() };
}
// nonce is an IBuffer object that would be sent from the cloud service.
HardwareToken^ packageSpecificToken;
packageSpecificToken = Windows::System::Profile::HardwareIdentification::GetPackageSpecificToken(nonce);
// hardware id, signature, certificate IBuffer objects
// that can be accessed through properties.
IBuffer^ hardwareId = packageSpecificToken->Id;
IBuffer^ signature = packageSpecificToken->Signature;
IBuffer^ certificate = packageSpecificToken->Certificate;
// nonce is an IBuffer object that would be sent from the cloud service.
Dim packageSpecificToken As Windows.System.Profile.HardwareToken
packageSpecificToken = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(nonce)
// hardware id, signature, certificate IBuffer objects
// that can be accessed through properties.
Dim hardwareId As Windows.Storage.Streams.IBuffer = packageSpecificToken.Id
Dim signature As Windows.Storage.Streams.IBuffer = packageSpecificToken.Signature
Dim certificate As Windows.Storage.Streams.IBuffer = packageSpecificToken.Certificate
Remarks
See Guidance on using the App Specific Hardware ID (ASHWID) to implement per-device app logic for more information.
Note
This class is not agile, which means that you need to consider its threading model and marshaling behavior. For more info, see Threading and Marshaling (C++/CX) and Using Windows Runtime objects in a multithreaded environment (.NET).
Methods
GetPackageSpecificToken(IBuffer) |
Gets a hardware identifier (ASHWID) that represents the current hardware. The returned ASHWID will be different for each application package. In other words, this API will return different identifiers when called by two apps from different packages. It will return the same identifier when called by two apps that are part of the same package. |