Что может работать, если вы делаете что-то вроде:
int main()
{
const char* text = "
#include "file.txt"
";
printf("%s", text);
return 0;
}
Конечно, вам нужно быть осторожным с тем, что на самом деле находится в файле, убедившись, что нет двойных кавычек, что все соответствующие символы экранированы и т. д.
Поэтому было бы проще, если бы вы просто загрузили текст из файла во время выполнения или встроили текст непосредственно в код.
Если вы все еще хотел текст в другом файле, который мог бы быть там, но он должен быть представлен там как строка. Вы использовали бы код, как указано выше, но без двойных кавычек. Например:
"Something evil\n"\
"this way comes!"
int main()
{
const char* text =
#include "file.txt"
;
printf("%s", text);
return 0;
}
Во-первых, не используют функции обратного вызова . Когда-либо
Во-вторых, PIO_APC_ROUTINE
объявляется как:
typedef
VOID
(NTAPI *PIO_APC_ROUTINE) (
IN PVOID ApcContext,
IN PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG Reserved
);
Таким образом, ваша функция GotIt
должна быть:
VOID NTAPI GotIt(
IN PVOID ApcContext,
IN PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG Reserved
);
NTAPI
__stdcall
, а не по умолчанию __cdecl
, о чем вам сообщает сообщение об ошибке.
Что вы сделали с этим:
PIO_APC_ROUTINE GotIt(PVOID param, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved);
... объявляет функцию, которая возвращает указатель на функцию. Это не то, что вы хотели.