Я прочитал очень увлекательную статью о программировании драйверов с использованием wdk, и одна из функций, которую он использовал, называется ObReferenceObjectByName. Эта функция доставила мне много головной боли. Первая плохая вещь - то, что это не зарегистрировано Microsoft. Второе, это то, что языком, использованным в статье, был C ++, и я хочу, чтобы мой код оставался простым и понятным. Я знаю, что большую часть времени это не должно быть проблемой, но у меня нет - для жизнь меня - удалось выяснить, как включить эту функцию.
Код в статье выглядит примерно так:
extern "C"{
#include <ntifs.h>
NTSYSAPI NTSTATUS NTAPI ObReferenceObjectByName(PUNICODE_STRING ObjectName,
ULONG Attributes,
PACCESS_STATE AccessState,
ACCESS_MASK DesiredAccess,
POBJECT_TYPE ObjectType,
KPROCESSOR_MODE AccessMode,
PVOID ParseContext OPTIONAL,
PVOID* Object);
}
Я пытался повторить это часами. Я пытался объявить его без ключевого слова extern, я пытался изменить соглашение о вызовах, я пытался изменить включения ... Я всегда получаю сообщение об ошибке "неразрешенный внешний символ ...".
Я абсолютно в замешательстве, поэтому, если кто-нибудь сможет дать какой-нибудь совет, я буду благодарен. Спасибо.