Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Передача параметров в DLL-метод


Автор: teRmit 26.6.2006, 10:13
Имеется:
В С++ варианте:
typedef struct _SERVICE_STATUS {
    DWORD   dwServiceType;
    DWORD   dwCurrentState;
    DWORD   dwControlsAccepted;
    DWORD   dwWin32ExitCode;
    DWORD   dwServiceSpecificExitCode;
    DWORD   dwCheckPoint;
    DWORD   dwWaitHint;
} SERVICE_STATUS;


Из С# необходимо вызвать метод:
[DllImport("Advapi32.dll", CharSet = CharSet.Auto)]
        static extern bool ControlService(IntPtr hService,
            ulong dwControl,
            IntPtr-?(SERVICE_STATUS-?) lpServiceStatus);




Так вот, как можно в C# осуществить передачу &status в DLL-метод:

SERVICE_STATUS status;
ControlService(hService, SERVICE_CONTROL_STOP, &status)
?  

Автор: mr.DUDA 26.6.2006, 10:58
Вместо сишных указателей и ссылок передаются объекты/структуры "как есть". P/Invoke потом сам разбирается, откуда взять указатель. Так что, последним аргументом ControlService можно передать структуру SERVICE_STATUS.

Добавлено @ 10:59 
P.S.
http://www.pinvoke.net/default.aspx/advapi32/ControlService.html 

Автор: teRmit 26.6.2006, 11:17
Спасибо! Помогло. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)