[DllImport("KeyDLL.dll",EntryPoint="key_generateRandom",PreserveSig=true)] //Во первых PreserveSig ставим в true
[return:MarshalAs(UnmanagedType.LPStr)] // Говорим маршалингу что возвращаемое значение есть поинтер на массив char
public static extern string key_genRND(ulong DEVICE_ID); // и тогда смело выгребыем возврат в string