c wince 取裝置號

2021-06-14 09:10:29 字數 2299 閱讀 1714

wince裝置,有時為了做軟體保護,採取註冊限制,需要取裝置的序列號,以下為通用的取法,網上抄的。

using   system; 

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.text;

using system.windows.forms;

using system.collections;

using system.diagnostics;

using system.runtime.interopservices;

using system.io;

using system.security.cryptography;

namespace check

; private static int32 method_buffered = 0;

private static int32 file_any_access = 0;

private static int32 file_device_hal = 0x00000101;

private const int32 error_not_supported = 0x32;

private const int32 error_insufficient_buffer = 0x7a;

private static int32 ioctl_hal_get_deviceid = ((file_device_hal) << 16) | ((file_any_access) << 14) | ((21) << 2) | (method_buffered);

[dllimport( "coredll.dll", setlasterror = true)]

private static extern bool kerneliocontrol(int32 dwiocontrolcode, intptr lpinbuf, int32 ninbufsize, byte lpoutbuf, int32 noutbufsize, ref int32 lpbytesreturned);

public static string getdeviceid()

else}}

int32 dwpresetidoffset = bitconverter.toint32(outbuff, 0x4); // device_id.dwpresetidoffset

int32 dwpresetidsize = bitconverter.toint32(outbuff, 0x8); // device_id.dwpresetsize

int32 dwplatformidoffset = bitconverter.toint32(outbuff, 0xc); // device_id.dwplatformidoffset

int32 dwplatformidsize = bitconverter.toint32(outbuff, 0x10); // device_id.dwplatformidbytes

stringbuilder sb = new stringbuilder();

for (int i = dwpresetidoffset; i < dwpresetidoffset + dwpresetidsize; i++)

//for (int i = dwplatformidoffset; i < dwplatformidoffset + dwplatformidsize; i++)

//return sb.tostring();

}catch (system.exception e)

} public static string getencrypt( string strdeviceid )

catch (system.exception ex)

if (no > strencrypt.length)

no = no%strencrypt.length;

}return sb.tostring();}}

}

主裝置號和次裝置號

上圖中,紅色方塊內為裝置的主裝置號,黃色方塊內為裝置的次裝置號。主裝置號是表示系統訪問這個裝置的 核心驅動 驅動程式是unix系統核心 中的一部分,其作用是用來控制一種特殊裝置的輸入輸出。大多數的unix系統都有多種裝置驅動程式,每乙個裝置檔名中的主裝置號就代表這個裝置使用的是哪個裝置驅動程式。次裝...

linux主裝置號和從裝置號

裝置號是在驅動module中分配並註冊的,也就是說,驅動module擁有這個裝置號 我的理解 而 dev目錄下的裝置檔案是根據這個裝置號建立的,因此,當訪問 dev目錄下的裝置檔案時,驅動module就知道,自己該出場服務了 當然是由核心通知 在linux核心看來,主裝置號標識裝置對應的驅動程式,告...

字元裝置驅動 裝置號 裝置檔案

主裝置號用來標識與裝置檔案相連的驅動程式.用來反映裝置型別.次裝置號被驅動程式用來辨別操作的是哪乙個裝置.用來區分同型別的裝置.通過的是主裝置號.字元裝置檔案 本身沒有太多的內容,通過 字元裝置檔案 能找到 字元裝置驅動程式 字元裝置檔案 能將 應用程式 的需求傳遞給 字元裝置驅動程式.核心中如何描...