Невыгружаемая память под Win98

Тема в разделе "WASM.WIN32", создана пользователем PROFi, 17 мар 2006.

  1. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Вопрос как под Win9x выделить память (она обязательно должна быть видима из под всех процессов), чтобы последнюю ни прикаких обстоятельствах Win не выгружал в своп. метод FileMaped решает первую часть вопроса, но Win9x может выгрузить эту память в своп.
     
  2. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Код (Text):
    1. pushstr     macro   par1
    2.         local   l_text123
    3.         call    l_text123
    4.         db  par1, 0
    5. l_text123:
    6.         endm
    7.  
    8.  
    9. .data?
    10. VxDCall_addr    dd  ?
    11.  
    12. .code
    13. ;-----------------------------------------------
    14. ;       Procedures
    15. ;-----------------------------------------------
    16. Get_VxDCall:    pushstr 'kernel32.dll'
    17.         call    LoadLibraryA
    18.         mov ecx, [eax+3Ch]
    19.         mov edx, [ecx+eax+78h]
    20.         add edx, eax
    21.         mov edx, [edx+1Ch]  ; AddressOfFunctions RVA
    22.         add edx, eax
    23.         mov edi, [edx]
    24.         add eax, edi    ; edi = VxDCall linaddr
    25.         mov [VxDCall_addr], eax
    26.         ret
    27.  
    28.  
    29. Ring0_malloc:   push    ebx
    30.         mov ebx, eax
    31.         push    8       ; PR_FIXED
    32.         push    eax
    33.         push    80080000h   ; PR_SYSTEM
    34.         push    10000h      ; _PageReserve
    35.         call    [VxDCall_addr]
    36.         push    eax
    37.         push    60008h      ; PC_FIXED + PC_USER + PC_WRITEABLE
    38.         push    0
    39.         push    3       ; PD_FIXEDZERO
    40.         push    ebx     ; nPages
    41.         shr eax, 12
    42.         push    eax
    43.         push    10001h
    44.         call    [VxDCall_addr]
    45.         pop eax
    46.         pop ebx
    47.         ret
    48.  
    49.  
    50. Ring0_free: push    0
    51.         push    eax
    52.         push    10002h
    53.         call    [VxDCall_addr]
    54.         ret
     
  3. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    _BC_

    спасибо попробую.

    ps в WinXP мой отладчик работает без проблем, если пойдет эта фишка, то и под Win9x тоже будет.
     
  4. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    нет, это 'win9x only'

    --

    ааа... прочитал еще раз, дошло что ты хотел сказать. ;)