Указатель на делегат

Тема в разделе ".NET", создана пользователем Red Wind, 9 май 2007.

Статус темы:
Закрыта.
  1. Red Wind

    Red Wind Гость

    С праздником!
    У меня есть определённый делегат. Нужно получить указатель на на этот делегат, что бы использовать в unmenaged коде. Вообще в framework 2.0 есть специальный метод Marshal.GetFunctionPointerForDelegate. Но мне нужно обойдтись возможностями первого фрэймворка. Скажите, как это мождно сделать?
     
  2. Red Wind

    Red Wind Гость

    Извиняюсь, скорее всего я немного запутался с постановкой задачи:p. Нужно полчить не указатель на делегат, а просто указатель на нейкий метод и положить этот указатель в класс IntPtr. Вот. Просто во втором фрэймворке имея возможность воспользоваться Marshal.GetFunctionPointerForDelegate это делается через делегаты.
     
  3. Red Wind

    Red Wind Гость

    Вот наткнулся на такаие методы как
    System.Runtime.InteropServices.Marshal.GetManagedThunkForUnmanagedMethodPtr
    System.Runtime.InteropServices.Marshal.GetUnmanagedThunkForManagedMethodPtr

    Вот что написано в MSDN:

    [ObsoleteAttribute("The GetManagedThunkForUnmanagedMethodPtr method has been deprecated and will be removed in a future release.", false)]
    public static IntPtr GetManagedThunkForUnmanagedMethodPtr (
    IntPtr pfnMethodToWrap,
    IntPtr pbSignature,
    int cbSignature
    )

    Parameters
    pfnMethodToWrap
    A pointer to the method to marshal.

    pbSignature
    A pointer to the method signature.

    cbSignature
    The number of bytes in pbSignature.

    Return Value
    A pointer to the thunk that will marshal a call from the pfnMethodToWrap parameter.

    Вроде по описанию похоже на то что нужно. Но проблема в том, что нет никакой документации по ним. Пока у меня не получилось разобраться с тем как их применять. Например, как получить указатель на метод и его сигнатуру?
     
  4. mms

    mms Гость

    Пример передачи указателя функции в анменеджед код:

    [DllImport("user32.dll")]
    static extern IntPtr SetWindowsHookEx(HookType hook, HookProc callback,
    IntPtr hMod, uint dwThreadId);

    delegate int HookProc(int code, IntPtr wParam, IntPtr lParam);

    public enum HookType : int
    {
    WH_JOURNALRECORD = 0,
    WH_JOURNALPLAYBACK = 1,
    WH_KEYBOARD = 2,
    WH_GETMESSAGE = 3,
    WH_CALLWNDPROC = 4,
    WH_CBT = 5,
    WH_SYSMSGFILTER = 6,
    WH_MOUSE = 7,
    WH_HARDWARE = 8,
    WH_DEBUG = 9,
    WH_SHELL = 10,
    WH_FOREGROUNDIDLE = 11,
    WH_CALLWNDPROCRET = 12,
    WH_KEYBOARD_LL = 13,
    WH_MOUSE_LL = 14
    }
     
Загрузка...
Похожие Темы - Указатель на делегат
  1. Vadik(R)
    Ответов:
    0
    Просмотров:
    2.106
  2. vital
    Ответов:
    4
    Просмотров:
    3.194
  3. acorn
    Ответов:
    8
    Просмотров:
    14.781
  4. Vunderkind
    Ответов:
    3
    Просмотров:
    1.804
  5. ToxaRat
    Ответов:
    3
    Просмотров:
    39
Статус темы:
Закрыта.

Поделиться этой страницей