wdk を使用したドライバーのプログラミングに関する非常に興味深い記事を読みました。この記事で使用された関数の 1 つは、ObReferenceObjectByName と呼ばれます。この機能は私に多くの頭痛の種をもたらしました。最初の悪い点は、Microsoft によって文書化されていないことです。2 つ目は、この記事で使用されている言語は C++ であり、コードは単純な 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」キーワードなしで宣言しようとした、呼び出し規約を変更しようとした、インクルードを変更しようとした...常に「未解決の外部シンボル...」というエラーが発生します。
本当に困っているので、どなたかアドバイスいただけると助かります。ありがとう。