ProtectedMemory::Protect Method (array<Byte>^, MemoryProtectionScope)
Protects the specified data.
Assembly: System.Security (in System.Security.dll)
public: static void Protect( array<unsigned char>^ userData, MemoryProtectionScope scope )
Parameters
- userData
-
Type:
array<System::Byte>^
The byte array containing data in memory to protect. The array must be a multiple of 16 bytes.
- scope
-
Type:
System.Security.Cryptography::MemoryProtectionScope
One of the enumeration values that specifies the scope of memory protection.
| Exception | Condition |
|---|---|
| CryptographicException | userData must be 16 bytes in length or in multiples of 16 bytes. |
| NotSupportedException | The operating system does not support this method. This method can be used only with the Windows 2000 or later operating systems. |
| ArgumentNullException | userData is null. |
This method can be used to protect data in memory. Note that the method does not make a copy of the data, but encrypts the byte array in place. The userData parameter must be 16 bytes in length or a multiple of 16 bytes.
Support for this method is available in the Windows XP and later operating systems.
The following code example shows how to use data protection.
#using <System.Security.dll> using namespace System; using namespace System::Security::Cryptography; int main() { // Create the original data to be encrypted (The data length should be a multiple of 16). array<Byte>^secret = {1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4}; // Encrypt the data in memory. The result is stored in the same same array as the original data. ProtectedMemory::Protect( secret, MemoryProtectionScope::SameLogon ); // Decrypt the data in memory and store in the original array. ProtectedMemory::Unprotect( secret, MemoryProtectionScope::SameLogon ); }
Available since 2.0