Проблемы с реализацией GetDeviceUniqueID в Windows Mobile 6.C#

Место общения программистов C#
Anonymous
Проблемы с реализацией GetDeviceUniqueID в Windows Mobile 6.

Сообщение Anonymous »

Я использую код, очень похожий на следующий вопрос о переполнении стека:
Не могу найти точку входа «GetDeviceUniqueID» в DLL PInvoke «coredll.dll»

(Мой код вставлен сюда для потомков):

Код: Выделить всё

[DllImport("coredll.dll")]
private extern static int GetDeviceUniqueID([In, Out] byte[] appdata,
int cbApplictionData,
int dwDeviceIDVersion,
[In, Out] byte[] deviceIDOuput,
out uint pcbDeviceIDOutput);

public static string GetDeviceID()
{
string appString = "MyApp";
byte[] appData = new byte[appString.Length];
for (int count = 0; count < appString.Length; count++)
{
appData[count] = (byte)appString[count];
}

int appDataSize = appData.Length;
byte[] DeviceOutput = new byte[20];
uint SizeOut = 20;
int i_rc = GetDeviceUniqueID(appData, appDataSize, 1, DeviceOutput, out SizeOut);

string idString = "";
for (int i = 0; i < DeviceOutput.Length; i++)
{
if (i == 4 || i == 6 || i == 8 || i == 10)
idString = String.Format("{0}-{1}", idString, DeviceOutput[i].ToString("x2"));
else
idString = String.Format("{0}{1}", idString, DeviceOutput[i].ToString("x2"));
}
return idString;

}
У меня нет проблем с компиляцией программы на моем эмуляторе и развертыванием на моем физическом устройстве. Однако этот код всегда возвращает значение: «00000000-0000-0000-0000-00000000000000000000».

(При самоанализе i_rc имеет значение 2147024809).

Что происходит не так? Почему кажется, что функция возвращает значение по умолчанию/безопасное значение?

Подробнее здесь: https://stackoverflow.com/questions/252 ... s-mobile-6

Вернуться в «C#»