Кто знает, подскажите, pls, где тут у меня ошибка (только не в ДНК! -))
Привожу кусок кода (немного урезанный). Ошибка, скорее всего, в функции обратного вызова.
структура:
PASSWORD_CACHE_ENTRY STRUCT
cbEntry WORD ? ; размер структуры
cbResource WORD ? ; размер имени
cbPassword WORD ? ; размер пароля
iEntry BYTE ? ; вход
nType BYTE ? ; тип входа -?
abResource BYTE ? ; начало имени
PASSWORD_CACHE_ENTRY ENDS
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
PceCallBack PROTO :PASSWORD_CACHE_ENTRY,:DWORD
Lib db "mpr.dll",0
Proced db "WNetEnumCachedPasswords",0
Собственно вызов функции:
invoke LoadLibrary,ADDR Lib
invoke GetProcAddress,eax,ADDR Proced
.if eax!=0
push 0
push PceCallBack
push 0FFh
push 0
push 0
call eax
.endif
И сама функция:
PceCallBack Proc Pce:PASSWORD_CACHE_ENTRY,Param:DWORD
LOCAL buf1[255]:BYTE
LOCAL buf2[255]:BYTE
invoke MemCopy,ADDR buf1,Pce.abResource,Pce.cbResource
lea edi,buf1
add edi,dword ptr [Pce.cbResource]
mov byte ptr [edi],0
invoke CharToOem,ADDR buf1,ADDR buf2 ; в buf2 должно быть название
;-- обнуление ---
lea edi,buf1
lea esi,buf2
mov ecx,255
@@:
mov byte ptr [edi],0
mov byte ptr [esi],0
inc edi
inc esi
loop @B
;----------------
lea edi,dword ptr [Pce.abResource]
add edi,dword ptr [Pce.cbResource]
invoke MemCopy,ADDR buf1,edi,Pce.cbPassword
lea edi,buf1
add edi,dword ptr [Pce.cbPassword]
mov byte ptr [edi],0
invoke CharToOem,ADDR buf1,ADDR buf2 ; в buf2 должен быть пароль
mov eax,TRUE
ret
PceCallBack endp
|