J'ai essayé d'utiliser la fonction appelée NTCreateFile
. Quand j'ai compilé cela m'a donné une erreur en disant "_NTCreateFile identifiant non trouvé". J'ai inclus l'en-tête winternl.h
. Alors, j'ai essayé d'utiliser ZwCreatFile
, MSDN j'ai inclus ntifs.h
, mais je ne suis pas en mesure d'inclure cet en-tête. Il dit "impossible d'ouvrir/trouver le répertoire". J'utilise V @ 2008. Quel est le problème? Est-ce que je manque quelque chose?Impossible d'inclure ntifs.h dans le projet win32
EDIT1:
typedef NTSTATUS (*fp_CreatFile)(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN PLARGE_INTEGER AllocationSize OPTIONAL,
IN ULONG FileAttributes,
IN ULONG ShareAccess,
IN ULONG CreateDisposition,
IN ULONG CreateOptions,
IN PVOID EaBuffer OPTIONAL,
IN ULONG EaLength
);
OBJECT_ATTRIBUTES myAttributes;
int _tmain(int argc, _TCHAR* argv[])
{
fp_CreatFile myFunction;
HMODULE module = LoadLibrary(L"ntdll.dll");
if(NULL != module)
{
myFunction = (fp_CreatFile)GetProcAddress(module,"NtCreateFile");
}
UNICODE_STRING string;
IO_STATUS_BLOCK fileStatus;
string.Length = 56;
string.Buffer = L"C:\\user\\kiddo\\Desktop\\7zFM.exe";
string.MaximumLength = 56;
HANDLE fileHandle;
myAttributes.ObjectName = &string;
myAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
long mystatus = myFunction(&fileHandle,FILE_GENERIC_READ,&myAttributes ,&fileStatus,NULL,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ,
NULL,NULL,NULL,NULL);
return 0;
}
Quand il essaie d'appeler qui lui donne l'erreur suivante dans une boîte de message. ERREUR: Echec de la vérification de l'exécution n ° 0 - La valeur de l'ESP n'a pas été enregistrée correctement lors d'un appel de fonction. Ceci est généralement le résultat de l'appel d'une fonction déclarée avec une convention d'appel avec un pointeur de fonction déclaré avec une convention d'appel différente.
Vous devriez publier les messages de sortie du compilateur verbatim (un copier-coller serait plus simple et plus précis qu'une * description *); il est important de savoir s'il s'agit ou non d'une erreur de l'éditeur de liens ou du compilateur (le message nous le dirait). De toute évidence, le fichier introuvable est une erreur pro-processeur, mais qu'en est-il * avant * votre tentative de résoudre le problème d'origine? – Clifford