Как вызвать эту функцию в ядре? Читаю мсдн https://docs.microsoft.com/ru-ru/windows/win32/seccng/systemprng?redirectedfrom=MSDN " This function has no associated header file or import library. To call this function, you must create a user-defined header file." Что это значит? Просто объявить? А дальше - нужен какой-то GetProcAddres?
M0rg0t, Там внизу либы: Обычно если описана апи то она и в экспорте есть. Ну а если нет в экспорте тогда будем решать как обычно блэком.
Запусти командную строку VS (или из Пуска, или в cmd запусти vcvars32.bat/vcvars64.bat, в зависимости от того под какую архитектуру будешь собирать драйвер) -> -> скопируй cng.sys из C:\Windows\System32\drivers в какую-нибудь папку -> -> перейди в эту папку в запущенной на первом шаге командной строке -> -> введи "dumpbin.exe /EXPORTS cng.sys > cng.exports" -> -> открой cng.exports, там будут все экспорты cng.sys -> -> создай cng.def с таким форматом: Код (Text): EXPORTS SystemPrng AnotherFunctionYouNeed YetAnother -> в той же командной строке введи "lib /def:cng.def /subsystem:native /name:cng.sys /machine:x64 /out:cng.lib" -> -> создастся cng.lib, который тебе надо подключить в свой проект: Затем импортируешь функцию, как обычно (если пишешь на C, то extern "C" не нужен): Код (C): #pragma once #include <wdm.h> typedef unsigned long BOOL; extern "C" NTSYSAPI BOOL NTAPI SystemPrng( unsigned char pbRandomData, size_t cbRandomData ); И можешь вызывать: Код (C): NTSTATUS DriverEntry(...) { SystemPrng(0, 0); } После сборки увидишь, что твой драйвер зависит от cng.sys: