Комментарии 3
Ну, именно такие вещи мне кажутся осмысленным применением С++/cli
Сопряжение управляемого и неуправляемого кода все еще довольно проблематично и вариантов тут два — либо COM по спецификациям Automation, либо C++/cli.
Положа руку на сердце, в данном случае я бы выбрал первый вариант — это позволило бы сократить код и сделать его проще.
Сопряжение управляемого и неуправляемого кода все еще довольно проблематично и вариантов тут два — либо COM по спецификациям Automation, либо C++/cli.
Положа руку на сердце, в данном случае я бы выбрал первый вариант — это позволило бы сократить код и сделать его проще.
0
ServiceControlManager::~ServiceControlManager()
{
if (!CloseServiceHandle(this->SCMHandle))
throw gcnew KernelErrorException();
}
В C++ cli это по сути дела является реализацией dispose. Dispose же по идее можно вызывать несколько раз и это не должно быть ошибочным действием.
К тому же этот код можно перенести в финализатор и в дейструкторе вызывать именно его, это будет соответствовать логике Dispose-паттерна для освобождения неуправляемых ресурсов.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Использование SCM для управления драйверами в C# реализованной с помощью dll на C++/cli