مرجع المبتدإ (مجموعة من الأكواد)
#6

35- المعالـــج :

كود :
const ID_BIT = $200000; // EFLAGS ID bit type TCPUID = array[1..4] of Longint; TVendor = array [0..11] of char; function IsCPUID_Available : Boolean; register; asm PUSHFD {direct access to flags no possible, only via stack} POP EAX {flags to EAX} MOV EDX,EAX {save current flags} XOR EAX,ID_BIT {not ID bit} PUSH EAX {onto stack} POPFD {from stack to flags, with not ID bit} PUSHFD {back to stack} POP EAX {get back to EAX} XOR EAX,EDX {check if ID bit affected} JZ @exit {no, CPUID not availavle} MOV AL,True {Result=True} @exit: end; function GetCPUID : TCPUID; assembler; register; asm PUSH EBX {Save affected register} PUSH EDI MOV EDI,EAX {@Resukt} MOV EAX,1 DW $A20F {CPUID Command} STOSD {CPUID[1]} MOV EAX,EBX STOSD {CPUID[2]} MOV EAX,ECX STOSD {CPUID[3]} MOV EAX,EDX STOSD {CPUID[4]} POP EDI {Restore registers} POP EBX end; function GetCPUVendor : TVendor; assembler; register; asm PUSH EBX {Save affected register} PUSH EDI MOV EDI,EAX {@Result (TVendor)} MOV EAX,0 DW $A20F {CPUID Command} MOV EAX,EBX XCHG EBX,ECX {save ECX result} MOV ECX,4 @1: STOSB SHR EAX,8 LOOP @1 MOV EAX,EDX MOV ECX,4 @2: STOSB SHR EAX,8 LOOP @2 MOV EAX,EBX MOV ECX,4 @3: STOSB SHR EAX,8 LOOP @3 POP EDI {Restore registers} POP EBX end; procedure TForm1.Button1Click(Sender: TObject); var CPUID : TCPUID; I : Integer; S : TVendor; begin for I := Low(CPUID) to High(CPUID) do CPUID[i] := -1; if IsCPUID_Available then begin CPUID := GetCPUID; Memo1.Lines.Add('CPUID[1] = ' + IntToHex(CPUID[1],8)); Memo1.Lines.Add('CPUID[2] = ' + IntToHex(CPUID[2],8)); Memo1.Lines.Add('CPUID[3] = ' + IntToHex(CPUID[3],8)); Memo1.Lines.Add( 'CPUID[4] = ' + IntToHex(CPUID[4],8)); Memo1.Lines.Add('PValue = '+ IntToStr(CPUID[1] shr 12 and 3)); Memo1.Lines.Add( 'FValue = '+IntToStr(CPUID[1] shr 8 and $f)); Memo1.Lines.Add( 'MValue = '+IntToStr(CPUID[1] shr 4 and $f)); Memo1.Lines.Add( 'SValue = '+IntToStr(CPUID[1] and $f)); S := GetCPUVendor; Memo1.Lines.Add( 'Vendor: ' + S); end else begin Memo1.Lines.Add( 'CPUID not available'); end; end;




36- اللوحــة الأم :

كود :
function GetAdapterInfo(Lana: Char): String; var Adapter: TAdapterStatus; NCB: TNCB; begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBRESET); NCB.ncb_lana_num := Lana; if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBASTAT); NCB.ncb_lana_num := Lana; NCB.ncb_callname := '*'; FillChar(Adapter, SizeOf(Adapter), 0); NCB.ncb_buffer := @Adapter; NCB.ncb_length := SizeOf(Adapter); if Netbios(@NCB) <> Char(NRC_GOODRET) then begin Result := 'mac not found'; Exit; end; Result := IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' + IntToHex(Byte(Adapter.adapter_address[5]), 2); end; function GetMACAddress: string; var AdapterList: TLanaEnum; NCB: TNCB; begin FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBENUM); NCB.ncb_buffer := @AdapterList; NCB.ncb_length := SizeOf(AdapterList); Netbios(@NCB); if Byte(AdapterList.length) > 0 then Result := GetAdapterInfo(AdapterList.lana[0]) else Result := 'mac not found'; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:=(GetMACAddress); end;
[-] كل من 1 user says قال شكرا ل nabilkeb على المشاركة المفيدة
  • zouaidahmed
الرد


الردود في هذا الموضوع
مرجع المبتدإ (مجموعة من الأكواد) - بواسطة nabilkeb - 10-09-2009, 01:05 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم