Указатель на структуру...

Тема в разделе "WASM.WIN32", создана пользователем Aywan, 6 дек 2007.

  1. Aywan

    Aywan Bragin Ivan

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    3
    Адрес:
    Tomsk - Russia
    MASM:
    Код (Text):
    1. CamProc proc hCam:HWND , vhdr:DWORD
    2. ...
    3. ret
    C++:
    Код (Text):
    1. typedef struct videohdr_tag {
    2.     LPBYTE      lpData;
    3.     DWORD       dwBufferLength;
    4.     DWORD       dwBytesUsed;
    5.     DWORD       dwTimeCaptured;
    6.     DWORD_PTR   dwUser;
    7.     DWORD       dwFlags;
    8.     DWORD_PTR   dwReserved[4];
    9. } VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR;
    10.  
    11. ....
    12.  
    13. LRESULT CALLBACK CamProc(HWND hcam,LPVIDEOHDR vhdr)
    14. {
    15. ...
    16. vhdr->lpData...
    17. ...
    18. }
    Что имено приходит в vhdr:lol: WORD, и как мне получить указатель на lpData?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Указатель на VIDEOHDR.
    vhdr это также и указатель на lpData, так как это поле первое.
    mov eax, vhdr
     
  3. Aywan

    Aywan Bragin Ivan

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    3
    Адрес:
    Tomsk - Russia
    Собственно я так и делал...
    Код (Text):
    1. mov eax,vhdr
    2. invoke WriteFile,f, eax ,640*480*3, addr wb, NULL
    только почемуто ничего не записывается...
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Aywan
    Конечно не запишется. Потому как в eax, указатель на элемент структуры lpData, а тебе по видимому нужен указатель на данные, и этот указатель лежит в lpData.
    Код (Text):
    1. mov eax, vhdr
    2. mov eax, [eax]
     
  5. Aywan

    Aywan Bragin Ivan

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    3
    Адрес:
    Tomsk - Russia
    Спасибо.