首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

关于获取mobile 手机IEMI的有关问题

2012-02-19 
关于获取mobile 手机IEMI的问题关于获取mobile手机IEMI的问题无法找到PInvokeDLL“Microsoft.MobileDevices

关于获取mobile 手机IEMI的问题
关于获取mobile   手机IEMI的问题
无法找到   PInvoke   DLL“Microsoft.MobileDevices.TuxNet.Core.dll”中的入口点“KernelIoControl”。  
[DllImport( "Microsoft.MobileDevices.TuxNet.Core.dll ")]是这个DLL吗,网上说是coredll.dll但我机器上没有这个。只有Microsoft.MobileDevices.TuxNet.Core.dll。有人知道是哪里的问题吗?


[DllImport( "Microsoft.MobileDevices.TuxNet.Core.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);


private   static   string   GetDeviceID()
                {
                        byte[]   OutputBuffer   =   new   byte[256];
                        Int32   OutputBufferSize,   BytesReturned;
                        OutputBufferSize   =   OutputBuffer.Length;
                        BytesReturned   =   0;
                     
                        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;
                        }

                        Int32   PresetIDOffset   =   BitConverter.ToInt32(OutputBuffer,   4);
                        Int32   PlatformIDOffset   =   BitConverter.ToInt32(OutputBuffer,   0xc);
                        Int32   PlatformIDSize   =   BitConverter.ToInt32(OutputBuffer,   0x10);

                        System.Text.StringBuilder   sb   =   new   System.Text.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)));

                        for   (int   i   =   PlatformIDOffset;
                                i   <   PlatformIDOffset   +   PlatformIDSize;
                                i++)
                        {
                                sb.Append(String.Format( "{0:X2} ",   OutputBuffer[i]));
                        }

                        return   sb.ToString();
                }


[解决办法]
http://www.winbile.net/Detail.aspx?D=260,1116764,848,120

热点排行