Получить доступ к указателю из функции =)

Тема в разделе "WASM.BEGINNERS", создана пользователем featurelles, 13 авг 2009.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Great
    По-моему путаешь.
    server_struct *serv_ptr; - объявление указателя
    struct server_struct *serv_ptr; - объявление типа и указателя

    И в С++ и Си должно быть одинаково.
     
  2. icent

    icent New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2009
    Сообщения:
    154
    Booster +1, я ж говорю в объявлении ошибка.
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    featurelles
    На чём пишешь? Область видимости в порядке?
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    пишут чото секретное, что нельзя показать, на 1200 строк, при этом не умея обращацо с глобальныме переменныме, заставляя всех гадать в чем же подстава...
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    дык в фаерволе же!
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Да, дырка в фаерволе не есть хорошо. ^)
     
  7. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Booster
    Си... видимости в порядке )

    Freeman
    Да да, если подскажешь как ещё можно получить доступ к указателю на структуры в хуке ядра.... буду чувствовать себя невеждой... но пока, никакие стандартные способы не помогли.
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Booster
    ?! объявление типа - typedef
     
  9. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    3 файла.
    x.h
    Код (Text):
    1. #include <stdlib.h>
    2. #include <unistd.h>
    3. #include <stdio.h>
    4. typedef struct _TEST{
    5.     int test1;
    6.     int test2;
    7. }TEST,*PTEST;
    8. extern PTEST ptst;
    x1.c
    Код (Text):
    1. #include "x.h"
    2. PTEST ptst;
    3. void foo(void);
    4. int main(void)
    5. {
    6.     ptst=malloc(sizeof(TEST));
    7.     ptst->test1=1;
    8.     ptst->test2=2;
    9.     foo();
    10. }
    x2.h
    Код (Text):
    1. #include "x.h"
    2. void foo(void)
    3. {
    4.     printf("%d %d", ptst->test1,ptst->test2);
    5. }
    собирается без проблем MinGW строчкой
    gcc -g -o x.exe x1.c x2.c
     
  10. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Freeman
    Мы обсуждали программинг в ядре.....
     
  11. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    синтаксис не отличается. вместо malloc поставь ExAllocatePool, вместо printf - DbgPrint... не это главное, а передача указателя на структуру через глобальную переменную
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Great
    Ё моё даос, typedef не для объявления (Definition), а для ввода синонима к существующему типу.
     
  13. IceT

    IceT IceT

    Публикаций:
    0
    Регистрация:
    13 авг 2009
    Сообщения:
    233
    Адрес:
    RU
    или вновь объвяляемому..
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Тфу, не Definition, а Declaration конечно. ^)
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Похоже я не прав.

    struct str *p;
    равно
    struct str;
    str *p;

    И "extern struct str *p;" равно "extern str *p;" с той лишь разницей, что во втором случае, без объявления оно не скомпилится.

    featurelles
    Похоже что всё-таки невидна глобальная переменная. Хотя бы схематично набросай структуру твоего проекта, где что находиться.
     
  16. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Booster
    Объявление структуры server_struct и указателя на неё . server_struct_ptr
    Функция обработчик входящих, исходящих пакетов. ( из этой функции нужно получить указатель на структуры )
    теперь идёт точка входа в модуль...функция my_init( )
    внутри my_init( ).... выделяется память для N количества структур,
    Теперь server_struct_ptr указывает на начало выделенной памяти, затем идёт модификация структур.
    (Тут осуществляю проверку, правильности заполнения структур в памяти и тд....всё верно!!!)
    Затем регистрирую обработчик входящих и исходящих пакетов в ядре. ( чтобы сработала функция обработчик пакетов, нужно зарегистрировать её в ядре... )
    Функция перехватчик должна иметь такой вид
    f unsigned int nf_hookfn(unsigned int hooknum,
    struct sk_buff *skb,
    const struct net_device *in,
    const struct net_device *out,
    int (*okfn)(struct sk_buff *));
    Вот и всё.

    И дополнительная часть my_cleanup( ) . - выгрузка программы.

    Получаем такой вид проги.

    Объявление структуры и указателя на неё.
    Заполнение nf_hookfn ( получить указатель и тд. )
    Точка входа в програмку. ( для простоты понимания Main )
    Внутри:
    Выделяем память для структур, заполняем, и проверяем....
    Регистрируем nf_hookfn в ядре.
    (После регистрации обработчика в ядре, он начинает работать.... и работает пока не вырубим прогу..а когда вырубим прогу, сработает my_cleanup( ) которая очистит всю память, выгрузит обработчики и тд. )
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    слушай, войн, выучи сперва Си )
    про struct structName varName особенно :)
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Спасибо за совет, давненько не брал я в руки шашки(Си).

    featurelles
    Что за компилятор? Если не хочешь выкладывать всё, то хотя бы воспроизведи минимально рабочий пример.
     
  19. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Booster
    gcc версия 4.3.2 (GCC)

    Пример воспроизведу сегодня, но позже.(к вечеру)