Announcement

Collapse
No announcement yet.

VxDCall

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • VxDCall

    Ich muss eine Funktion in einer System VXD aufrufen. Die im Internet angebotenen Versionen funktionieren nicht.<br>
    Das OS ist Windows 98 (alle Varianten) und die Funktion ist VKD_API_Force_Key. Es soll erreicht werden das DirectInput die Taste erkennt.<br>
    Hagen, das ist wahrscheinlich was fuer dich.

  • #2
    Hi Robert

    Uff, VxDCall ist heiß. Eine direkte funktion gibts meines Erachtens nicht. Das Kernel (9x) exportiert ca. 6 verschiedene VxDCall funktionen, per ordinal. d.h. erstmal wird eine eigene GetProcAdress() funktion benötigt damit überhaupt ein Import per Ordinal möglich ist. Zum Glück findest Du hier im Forum schon einen Source der eine solche Funktion beinhaltet. Nun, diese verschiedenen VxDCall Funktionen sind nötig da jede für sich einen anderen Paramteraufbau besitzt. Genauer gesagt, es werden die Parameter per Register übergeben, so wie fast alles was auf Ring 0 laufen soll. Deren Interpretation ist natürlich VxD-abhängig. Normalerweise wird aber offiziell DeviceIOControl() benutzt. Ich persönlich meine es wäre einfacher sich das DDK zu schnappen, das mitgelieferte VxD Source Template zu nehmen, eine eigene VxD Routine zu coden die dann VKD_API_Force_Key importiert (dieser Import funktioniert bei VxD's anders als beim PE Format) und dann über die reguläre Schnittstelle per DeviceIOControl() alles notwendige erledigt. resulat wäre dann ein eigener VxD der die gewünschte Funktion für Ring3 Applikationen über DeviceIOControl() zur Verfügung stellt.

    Gruß Hagen

    PS: Stell mir doch nicht immer so miese Fragen ich weiß leider auch nicht alles. Meine "kläglichen Versuche" mit den VxDCall funktionen sind leider gescheitert, da eben der Aufrufstack + Aufrufregister exakt gecodet werden muß und die Verantwortung beim Aufrufer liegt. Zusätzlich wird bei einigen VxD's noch die 16Bit/32Bit addressierung gemixt, d.h. besonders einige Parameter müssen von der Flat Addressierung auf die Segment:Offset Notation konvertiert werden. Dazu benötigt man aber Selektoren und diese sind schwer unter 9x zu erzeugen. (kein offizielles API für Ring3 App

    Comment


    • #3
      Kannst Du mir so ein VXD screiben? Da liegt naemlich mein Problem.<br>
      Alternativ waeren vielleicht deine "klaeglichen Versuche" hilfreich.<br>
      Weiteres vielleicht direkt an mich [email protected]

      Comment


      • #4
        Hallo Robert,

        was funktioniert denn an der Version aus dem Internet nicht?

        Tschüss Ti

        Comment


        • #5
          unter http://www.entwickler-forum.de\webx?13@@.ee6d062/19 findest Du den Code für GetGrocAdress() und zur Ermittlung des Kernel32 Module handles. Die Funktion die GetModuleHandle('Kernel32.dll') simultiert heist K32().

          Gruß Hage

          Comment


          • #6
            Tim, ich habe die Version die in Pascal nach dem Segment '.edata' sucht. Das funktioniert nicht, da KERNEL32.DLL unter Windows 98 gar kein '.edata' Segment hat

            Comment


            • #7
              Hallo Robert,

              ich dachte du hättest ein Delphi-Bsp. dafür, deshalb denke ich dass die alte VxD kaum noch funktionieren wird (unter W98)?!

              Was genau soll denn erreicht werden

              Comment


              • #8
                Die VXD die ich erreichen will ist bestimmt noch da. Es ist VKD = Virtual Keyboard Device.<br>
                Unter Win 98 kann mit keybd_event keine Taste an DirectInput geschickt werden. Ich haber nun aber ein Programm das als Treiber fuer ein Geraet fungiert, das genau das erreichen will.<br>
                Ich sehe keine andere Moeglichkeit als das VKD anzusprechen moeglichst ohne Treiber

                Comment


                • #9
                  Hagen, bin ich jetzt bloed? Gestern konnte ich die K32() Nachricht mit dem IE finden, waehrend heute mit Netscape nichts zu finden ist.<br>
                  Dein Link funktioniert nicht.<br>
                  Kannst du mit die Nachrichten/Sourcen direkt schicken

                  Comment


                  • #10
                    Delphi\Diverses\"Feststellen, ob ein Programm von Delphi aufgerufen wurde&quot

                    Comment


                    • #11
                      Nun komme ich an VxDCall ran (hoffe ich zumindest), aber mein Aufruf von VKD_API_Force_Key tut nichts. Da werde ich wohl noch weiterexperimentieren muessen

                      Comment

                      Working...
                      X