Desktop Functions:

   Smart Device Functions:

Show Recent Changes
Subscribe (RSS)
Misc. Pages
Helpful Tools
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
UuidCreate (rpcrt4)
Create a new UUID

C# Signature:

static extern int UuidCreate(ref UUID id);

VB Signature:

Declare Function UuidCreate Lib "rpcrt4.dll" (ByRef id As UUID) As Integer

User-Defined Types:

private struct UUID
     public ulong Data1;
     public ushort Data2;
     public ushort Data3;
     [MarshalAs(UnmanagedType.ByValTStr, SizeConst=8)]
     public string Data4;

private const int RPC_S_OK = 0;
private const int RPC_S_OUT_OF_MEMORY = 14;
private const int RPC_S_UUID_LOCAL_ONLY = 1824;

Alternative Managed API:

Do you know one? Please contribute it!



Tips & Tricks:

Please add some!

Sample Code:

UUID id = new UUID();
rc = UuidCreate(ref id);
if (rc != RPC_S_OK && rc != RPC_S_UUID_LOCAL_ONLY)
     // Handle error

Typically, the UUID is required as a string. Here is how:

private static extern int UuidToString(ref UUID uuid, ref System.IntPtr str);

private static extern int RpcStringFree(ref System.IntPtr str);

public static string generateUUID()
     int rc;

     UUID id = new UUID();
     rc = UuidCreate(ref id);
     if (rc != RPC_S_OK && rc != RPC_S_UUID_LOCAL_ONLY)
     throw <cannot create UUID exception>;

     System.IntPtr str = new System.IntPtr();
     rc = UuidToString(ref id, ref str);
     case RPC_S_OK:
     case RPC_S_OUT_OF_MEMORY:
         throw <out of memory excepetion>;
         throw <UuidToString failed exception>;

     string result;
     result = Marshal.PtrToStringAnsi(str);
     catch(System.Exception ex)
     throw <PtrToStringAnsi failed exception>;
     if ((rc = RpcStringFree(ref str)) != RPC_S_OK)
     throw <RpcStringFree failed exception>;
     return result;

UuidCreate @msdn on MSDN

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

Access directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version