AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi wie Hardware (HID) erkennen und via Programm verbinden/trennen?
Thema durchsuchen
Ansicht
Themen-Optionen

wie Hardware (HID) erkennen und via Programm verbinden/trennen?

Ein Thema von himitsu · begonnen am 12. Okt 2010 · letzter Beitrag vom 23. Nov 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#11

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 16:03
Okay, bleib mal locker. Alle diese Funktionen sind üblicherweise Frontends zu den IOCTLs.

Haste mal mit ZwDeviceIoControlFile probiert? Wenn ja, was sind die Ergebnisse im IoStatusBlock?!
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 16:31
So, hab's versucht.

Zitat:
Im Projekt HIDTest.exe ist eine Exception der Klasse EJwaLoadLibraryError mit der Meldung 'Library not found: ntdll.dll' aufgetreten.
OK, die JwaWinType ist nicht wirklich Unicode-fähig.

Und nun wo das Unicode angepaßt wurde, heißt es Result (NTSTATUS) = 0, IoStatusBlock bleibt leer und GetLastError meint
Zitat:
Im Projekt HIDTest.exe ist eine Exception der Klasse EOSError mit der Meldung 'Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen' aufgetreten.

Delphi-Quellcode:
W := ZwDeviceIoControlFile(H, 0, nil, nil, @IOSB, IOCTL_HID_DEACTIVATE_DEVICE,
  nil, 0, nil, 0);

// oder

W := ZwDeviceIoControlFile(H, 0, nil, nil, @IOSB, IOCTL_HID_DEACTIVATE_DEVICE,
  @X, SizeOf(X), nil, 0);
Wobei ich halb immernoch nicht weiß, was man als X genau angeben muß.
$2B or not $2B
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#13

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 16:41
Was hat das mit Unicode zu tun und warum gerade JwaWinType?

Du hast kaum Ahnung, wie man die API benutzt und meinst aber, dass die Übersetzung schuld sei?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#14

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 16:44
Ups, tut mir leid. Habe dich ohnehin auf die falsche Fährte geführt. MSDN-Library durchsuchenIOCTL_HID_DEACTIVATE_DEVICE erfordert Type3InputBuffer und dieser ist nur vom Kernelmode aus zugreifbar (zumindest Type3InputBuffer). Ohne extra Treiber kann man das also ohnehin nicht realisieren - zumindest nicht mit diesem IOCTL.

Sorry
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad (13. Nov 2010 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#15

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 16:50
Weil ich grade diese Units hier rumliegen hatte?
Nja, als ich Letztens nach einigen APIs gesucht hatte, war ich darüber gestolpert und hatte es runtergeladen.

Das ZwDeviceIoControlFile wird vom JWA dynamisch geladen, was allerdings nicht klappte.
Delphi-Quellcode:
// unit Windows
type
  LPWSTR = PWideChar;

// unit JwaWinType
type
  LPTSTR = {$IFDEF USE_DELPHI_TYPES} Windows.LPWSTR {$ELSE} LPWSTR {$ENDIF};
  LPCTSTR = LPTSTR;
function GetModuleHandle(lpModuleName: LPCTSTR): HMODULE; stdcall;
function LoadLibrary(lpLibFileName: LPCTSTR): HMODULE; stdcall;

function GetModuleHandle; external kernel32 name 'GetModuleHandleA';
function LoadLibrary; external kernel32 name 'LoadLibraryA';
Also Unicode ... nja, es ist als PWideChar deklariert, aber es wurden die Ansi-APIs aufgerufen.
Nach W geändert und schon wurde die DLL und die Prozedur gefunden.


Eigentlich hab ich meine paar APIs selber deklariert,
aber da die Delphi-Suche (Strg+Shift+F) vorhin meinte, diese API sei darin vorhanden, hab ich es zu Testen halt einfach mal daraus aufgerufen.
Sonst nutzte ich dieses JWA eigentlich nicht direkt.



[add]
'ne Deklaration des Type3InputBuffer hatte ich eh noch nicht gefunden.
Aber ich sagte ja ... wenn ich Pech hab, dann haben diese APIs eh nur was mit diesen Miniport-Treibern zu tun.
$2B or not $2B

Geändert von himitsu (13. Nov 2010 um 16:57 Uhr)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#16

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 16:54
Weil ich grade diese Units hier rumliegen hatte?
Nja, als ich Letztens nach einigen APIs gesucht hatte, war ich darüber gestolpert und hatte es runtergeladen.
Ah ok, mir dämmerts. Wo hast du die her?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 17:05
Ah ok, mir dämmerts. Wo hast du die her?
Ich glaub Google hatte mich dahin geleitet.
http://jedi-apilib.sourceforge.net/

Hab hier kein Windows PSDK drauf und da man z.B. abundzu mal irgendwelche Konstanten benötigt, von welchen im MSDN nicht immer der Wert erwähnt wird, muß man halt wo anders suchen ... u.A. auch dort drin und bis jetzt war es schon eine recht gute Quelle. (wobei ich diese Units noch nie wirklich direkt eingebunden hatte)
$2B or not $2B
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#18

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 13. Nov 2010, 17:29
Die Downloads auf dieser Seite sind nicht bestimmt in neuen Programmen eingesetzt zu werden. Sie sind alt und werden nicht gepflegt.
Das steht da auch übrigens:
Zitat:
This download is updated very seldom. Please use the main JEDI API headers.

Benutze stattdessen:
http://sourceforge.net/projects/jedi-apilib

EDIT:

Ich hab den alten Link mal angepasst, damit da niemand in Versuchung gerät.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)

Geändert von Dezipaitor (13. Nov 2010 um 18:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#19

AW: wie Hardware (HID) erkennen und via Programm verbinden/trennen?

  Alt 23. Nov 2010, 21:25
Weil's mir gerade untergekommen ist MSDN-Library durchsuchenSetupDiRestartDevices könnte noch einen Blick wert sein, oder?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz