Rev 4429 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4429 | Rev 4433 | ||
---|---|---|---|
Line 1093... | Line 1093... | ||
1093 | 1093 | ||
1094 | ; scan for required DLL in list of already loaded for this process, |
1094 | ; scan for required DLL in list of already loaded for this process, |
1095 | ; ignore timestamp |
1095 | ; ignore timestamp |
Line 1096... | Line 1096... | ||
1096 | cli |
1096 | cli |
1097 | - | ||
1098 | mov esi, [CURRENT_TASK] |
1097 | |
1099 | shl esi, 8 |
1098 | mov esi, [current_process] |
1100 | lea edi, [fullname] |
1099 | lea edi, [fullname] |
1101 | mov ebx, [esi+SLOT_BASE+APPDATA.dlls_list_ptr] |
1100 | mov ebx, [esi+PROC.dlls_list_ptr] |
1102 | test ebx, ebx |
1101 | test ebx, ebx |
1103 | jz .not_in_process |
1102 | jz .not_in_process |
1104 | mov esi, [ebx+HDLL.fd] |
1103 | mov esi, [ebx+HDLL.fd] |
Line 1456... | Line 1455... | ||
1456 | ; DLL is per-process object, so APPDATA.dlls_list_ptr must be |
1455 | ; DLL is per-process object, so APPDATA.dlls_list_ptr must be |
1457 | ; kept in sync for all threads of one process. |
1456 | ; kept in sync for all threads of one process. |
1458 | ; out: eax = APPDATA.dlls_list_ptr if all is OK, |
1457 | ; out: eax = APPDATA.dlls_list_ptr if all is OK, |
1459 | ; NULL if memory allocation failed |
1458 | ; NULL if memory allocation failed |
1460 | init_dlls_in_thread: |
1459 | init_dlls_in_thread: |
1461 | mov ebx, [current_slot] |
1460 | mov ebx, [current_process] |
1462 | mov eax, [ebx+APPDATA.dlls_list_ptr] |
1461 | mov eax, [ebx+PROC.dlls_list_ptr] |
1463 | test eax, eax |
1462 | test eax, eax |
1464 | jnz .ret |
1463 | jnz .ret |
1465 | push [ebx+APPDATA.process] |
- | |
- | 1464 | ||
1466 | mov eax, 8 |
1465 | mov eax, 8 |
1467 | call malloc |
1466 | call malloc ; FIXME |
1468 | pop edx |
- | |
1469 | test eax, eax |
1467 | test eax, eax |
1470 | jz .ret |
1468 | jz .ret |
- | 1469 | ||
1471 | mov [eax], eax |
1470 | mov [eax], eax |
1472 | mov [eax+4], eax |
1471 | mov [eax+4], eax |
1473 | mov ecx, [TASK_COUNT] |
- | |
1474 | mov ebx, SLOT_BASE+256 |
- | |
1475 | .set: |
1472 | |
1476 | cmp [ebx+APPDATA.process], edx |
1473 | mov ebx, [current_process] |
1477 | jnz @f |
- | |
1478 | mov [ebx+APPDATA.dlls_list_ptr], eax |
1474 | mov [ebx+PROC.dlls_list_ptr], eax |
1479 | @@: |
- | |
1480 | add ebx, 256 |
- | |
1481 | dec ecx |
- | |
1482 | jnz .set |
- | |
1483 | .ret: |
1475 | .ret: |
1484 | ret |
1476 | ret |
Line 1485... | Line 1477... | ||
1485 | 1477 | ||
1486 | ; in: eax = number of references to delete, esi -> DLLDESCR struc |
1478 | ; in: eax = number of references to delete, esi -> DLLDESCR struc |