Открытие работающего файла из внедренной длл

Тема в разделе "WASM.BEGINNERS", создана пользователем Cigan, 1 ноя 2006.

  1. Cigan

    Cigan New Member

    Публикаций:
    0
    Регистрация:
    13 окт 2003
    Сообщения:
    54
    Адрес:
    Моск.обл
    Собственно Subj
    Вот таким кодом я пытаюсь это сделать но толку ноль возращаеться ошибка ERROR_SHARING_VIOLATION хотя при запущенном файле я могу делать с ним физически все что вздумаеться удалять, перемещать, переименовывать и даже изменять но из длл ничего не получаеться.
    Код (Text):
    1. mov hFile,$invoke(CreateFile,WarPath,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0)
    2.     .if hFile!=-1
    3.         mov FileSize,$invoke(GetFileSize,hFile,0)
    4.         mov hFileMap,$invoke(CreateFileMapping,hFile,0,PAGE_READONLY,0,0,0)
    5.         .if eax!=0
    6.             mov FileMapping,$invoke(MapViewOfFile,hFileMap,FILE_MAP_READ,0,0,0)
    7.             mov edi,FileMapping
    8.             assume edi:ptr IMAGE_DOS_HEADER
    9.             .if [edi].e_magic==IMAGE_DOS_SIGNATURE
    10.                 add edi,[edi].e_lfanew
    11.                 assume edi:ptr IMAGE_NT_HEADERS
    12.                 .if [edi].Signature==IMAGE_NT_SIGNATURE
    13.                     mov eax,[edi].OptionalHeader.ImageBase
    14.                     mov ImageBase,eax
    15.                     mov ax,[edi].FileHeader.NumberOfSections
    16.                     mov NumberSection,ax
    17.                     add edi,sizeof IMAGE_NT_HEADERS
    18.                     mov ecx,sizeof IMAGE_SECTION_HEADER.Name1
    19.                     mov esi,offset NameSection
    20.                     repe cmpsb
    21.                     sub edi,sizeof IMAGE_SECTION_HEADER.Name1
    22.                     .if zero?
    23.                         assume edi:ptr IMAGE_SECTION_HEADER
    24.                         mov eax,[edi].VirtualAddress
    25.                         mov WarRVA,eax
    26.                         mov eax,[edi].SizeOfRawData
    27.                         mov WarSizeOfData,eax
    28.                     .endif
    29.                 .endif
    30.             .else
    31.                 push $CTA0("Can't mapping file")
    32.                 call ErrorMEssage
    33.                 mov Error,1
    34.                 ret
    35.             .endif
    36.         .else  
    37.             push $CTA0("Can't create map file")
    38.             call ErrorMEssage
    39.             mov Error,1
    40.             ret
    41.         .endif
    42.     .else
    43.         push $CTA0("Can't open file")
    44.         call ErrorMEssage
    45.         mov Error,1
    46.         ret
    47.     .endif
    48.     ret