Suite à un poste D'EBartSoft j'ai créer une petite DLL assembleur permettant de contourner le problème survenant de manière inexpliquer sur certaine machine.
Source / Exemple :
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
.586 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
; include files
; ~~~~~~~~~~~~~
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\Comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\shell32.inc
include \masm32\include\oleaut32.inc
include \masm32\include\dialogs.inc
include \masm32\macros\macros.asm ; the macro file
; libraries
; ~~~~~~~~~
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\Comctl32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\oleaut32.lib
; ----------------------------------------
; prototypes for local procedures go here
; ----------------------------------------
.data?
hInstance dd ?
.code
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
LibMain proc instance:DWORD,reason:DWORD,unused:DWORD
ret
LibMain endp
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
comment * -----------------------------------------------------
You should add the procedures your DLL requires AFTER
the LibMain procedure. For each procedure that you
wish to EXPORT you must place its name in the "CPUID.def"
file so that the linker will know which procedures to
put in the EXPORT table in the DLL. Use the following
syntax AFTER the LIBRARY name on the 1st line.
LIBRARY CPUID
EXPORTS YourProcName
EXPORTS AnotherProcName
------------------------------------------------------- *
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
GetCPUID proc addrCPUID:DWORD
mov esi, addrCPUID
mov eax,1
cpuid
mov dword ptr [esi + 4h],eax
mov eax,3
cpuid
mov dword ptr [esi + 8h],ecx
mov dword ptr [esi + 0Ch],edx
ret
GetCPUID endp
end LibMain
Conclusion :
Code de départ :
http://www.vbfrance.com/code.aspx?ID=19705
Je ne sais pas si le code est à sa place sur ce site mais je me disais que le plus important etait fait en assembleur donc voila...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.