Hej, Vilket id är det du menar? Hur får du fram det i PDA:n? Det finns väl ett id som identifierar kopplingen till ActiveSync, men den blir olika för varje PC man synkar med, samt att det blir ett nytt när man resetat PDA:n. Är det detta eller något annat du är ute efter? Hej, Det finns lite Unmanaged Code-saker man kan skriva för att få fram det. Nedan hittade jag nånstans på nätet. Jag känner inte till någon "snygg" lösning. Men en möjlighet är att skriva ett program som körs på PDA:n som plockar fram värdet och skriver det i registret eller en fil. Detta program startar du från PC:n och hämtar sedan resultatet.C# Pocket PC: komma åt device id via cradle/vaggan?
jag har kod för hur man tar fram ett "device id" (hårdvarunummer) på en Pocket PC om man kör koden på handdatorn.
Jag undrar nu ifall det finns något sätt att via en vanlig stationär dator ta fram "device id" from Pocket PC:n då den sitter i vaggan.
Har letat runt lite, men inte hitta något vettigt.
tips/ideér?
Jag använder C#.Sv: C# Pocket PC: komma åt device id via cradle/vaggan?
/JohanSv:C# Pocket PC: komma åt device id via cradle/vaggan?
nej jag är ute efter "device id", dvs hårdvarunumret för enheten. Det är fast och går inte att ändra på och unikt. Det går att ta fram detta nummer med lite C# kod om man kör den på handdatorn, men jag hade velat komma åt detta från en stationär dator via vaggan... ALltså köra ett program på en stationär dator och få fram hårdvarunumret på pocket-PCn som sitter i vaggan.
Har fortfarande inte hittat något om det.Sv:C# Pocket PC: komma åt device id via cradle/vaggan?
<code>
using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Text;
namespace SIC
{
/// <summary>
/// Summary description for SerialRetriver.
/// </summary>
public class SerialRetriver
{
//======== CONNECTION TO Platform Invocation Services and KernelIoControl. ==============
[DllImport("coredll.dll")]
private static extern bool KernelIoControl(Int32 IoControlCode, IntPtr
InputBuffer, Int32 InputBufferSize, byte[] OutputBuffer, Int32
OutputBufferSize, ref Int32 BytesReturned);
private static Int32 FILE_DEVICE_HAL = 0x00000101;
private static Int32 FILE_ANY_ACCESS = 0x0;
private static Int32 METHOD_BUFFERED = 0x0;
private static Int32 IOCTL_HAL_GET_DEVICEID =
((FILE_DEVICE_HAL) << 16) | ((FILE_ANY_ACCESS) << 14)
| ((21) << 2) | (METHOD_BUFFERED);
//=======================================================================================
public static string GetDeviceID()
{
byte[] OutputBuffer = new byte[256];
Int32 OutputBufferSize, BytesReturned;
OutputBufferSize = OutputBuffer.Length;
BytesReturned = 0;
// Call KernelIoControl passing the previously defined
// IOCTL_HAL_GET_DEVICEID parameter
// We donÂ’t need to pass any input buffers to this call
// so InputBuffer and InputBufferSize are set to their null
// values
bool retVal = KernelIoControl(IOCTL_HAL_GET_DEVICEID,
IntPtr.Zero,0,OutputBuffer,OutputBufferSize,ref BytesReturned);
// If the request failed, exit the method now
if (retVal == false)
{
return null;
}
// Examine the OutputBuffer byte array to find the start of the
// Preset ID and Platform ID, as well as the size of the
// PlatformID.
// PresetIDOffset – The number of bytes the preset ID is offset
// from the beginning of the structure
// PlatformIDOffset - The number of bytes the platform ID is
// offset from the beginning of the structure
// PlatformIDSize - The number of bytes used to store the
// platform ID
// Use BitConverter.ToInt32() to convert from byte[] to int
Int32 PresetIDOffset = BitConverter.ToInt32(OutputBuffer, 4);
Int32 PlatformIDOffset = BitConverter.ToInt32(OutputBuffer, 0xc);
Int32 PlatformIDSize = BitConverter.ToInt32(OutputBuffer, 0x10);
// Convert the Preset ID segments into a string so they can be
// displayed easily.
StringBuilder sb = new StringBuilder();
sb.Append(String.Format("{0:X8}-{1:X4}-{2:X4}-{3:X4}-",
BitConverter.ToInt32(OutputBuffer, PresetIDOffset),
BitConverter.ToInt16(OutputBuffer, PresetIDOffset +4),
BitConverter.ToInt16(OutputBuffer, PresetIDOffset +6),
BitConverter.ToInt16(OutputBuffer, PresetIDOffset +8)));
// Break the Platform ID down into 2-digit hexadecimal numbers
// and append them to the Preset ID. This will result in a
// string-formatted Device ID
for (int i = PlatformIDOffset;
i < PlatformIDOffset + PlatformIDSize;
i ++ )
{
sb.Append( String.Format("{0:X2}", OutputBuffer[i]));
}
// return the Device ID string
return sb.ToString();
}
}
}
</code>Sv: C# Pocket PC: komma åt device id via cradle/vaggan?
/Johan