IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

NTSYSAPI .. NTKERNELAPI .. dans le DDK.


Sujet :

Windows

  1. #1
    Membre habitué Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Points : 170
    Points
    170
    Par défaut NTSYSAPI .. NTKERNELAPI .. dans le DDK.
    Bonjour,

    Et il y en a d'autres ... NTHALAPI ... NTSYSCALLAPI ......(c'est tout !)
    Pour toutes ces expressions,il s'agit de "#define", et elles veulent dans l'absolu toutes "dire"la même chose ... à savoir " __decspec (dllimport) !
    Ces différents mots (NTSYSAPI, NTKERNELAPI ...) sont utilisés lors de la déclaration d'une fonction. Si sur un plan "pratique", on "pourrait" aussi bien utiliser l'une que l'autre ... sur un plan symbolique, ces expressions ne veulent pas dire la même chose. Quelq'un connait-il le fin mot de l'histoire, le pourquoi et le quand ... de l'utilisation de l'un plutôt que de l'autre ?
    Sur le Net, à ce sujet ... on soupçonne des règles, mais c'est plutôt la soupe. Certains semblent cohérents ... mais bcp d'autres !!! On utilise NTKERNELAPI pour une fonction qui se trouve dans ntdll.dll ... et NTSYSAPI pour une fonction qui est dans ntoskrnl.exe ou dans kernel32 ... ! Alors la vraie vérité, ou est-elle ? quelqu'un a-t-il une connaissance "au dessus du lot" à ce sujet là. Un grand merci à tous.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Ben, je pense que l'explication donnée est la bonne...

    Quand on compile le kernel, NTKERNELAPI est sûrement défini en __declspec(dllexport) au lieu de dllimport...
    Et quand on compile ntdll.dll, ce doit être NTSYSAPI...

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 160
    Points
    160
    Par défaut
    Je ne sais pas si je parle de la même chose (ou si je ne défonce pas les portes que tu as déjà largement ouvertes, donc du sous-lot (arf)) mais il est possible d'appeler directement ntoskrnl.exe à condition de respecter le type de Call selon l’appel :

    http://www.jankratochvil.net/project...calltype_cdecl

    StdCall :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call 'ntoskrnl.exe.IoIsWdmVersionAvailable' WDM_MAJORVERSION,
                                                WDM_MINORVERSIO
    FastCall :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    NTSTATUS CompleteRequest(PIRP Irp, NTSTATUS status)
    {
    Irp->IoStatus.Status = status;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return status;
    }
    (pour la version 2 paramètres) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Proc CompleteRequest2:
     
      Arguments @Irp,
                @status
     
      mov ecx D@Irp
     
      mov eax D@status, D$ecx+018 eax
     
      xor dl dl | Call 'ntoskrnl.exe.IofCompleteRequest'
     
      mov eax D@Irp
     
      Return D$eax+018
     
    EndP
    cdecl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Call 'ntoskrnl.exe.wcscpy' esi,
                               ebx
     
    lea esp D$esp+(2*DWORD) ; ou pop eax pop eax selon l’humeur
    PS : L’implémentation des .sys commence sous RosAsm et je travaille sur le portage d’exemples de W.Oney (drivers WDM) .

Discussions similaires

  1. DBLookupComboBox dans DBGrid
    Par KThrax dans le forum Bases de données
    Réponses: 7
    Dernier message: 24/08/2004, 15h18
  2. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  3. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo