AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mit DeviceIoControl Laufwerk sperren und auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit DeviceIoControl Laufwerk sperren und auslesen

Ein Thema von Kasoft · begonnen am 26. Mai 2004 · letzter Beitrag vom 22. Nov 2005
 
Olli
(Gast)

n/a Beiträge
 
#8

Re: Mit DeviceIoControl Laufwerk sperren und auslesen

  Alt 22. Nov 2005, 12:36
@Nils_25: das ist eine andere Frage, gehört also in einen neuen Thread. Aber du kannst dir ja mal das Makro anschauen, dessen Parameter du uns oben angegeben hast, dann wirst du feststellen, wie man die IOCTLs selber berechnet. Der Name des Makros ist: CTL_CODE

Ich würde dir übrigens nicht empfehlen den generischen Porttreiber ("GPD") aus dem DDK zu nehmen - auch nicht irgendwelche Derivate, die du u.U. noch nichtmal verstehst. Habe ich hier schon oft genug begründet, also suche einfach mal mithilfe der Forumssuche.

Das Makro:
Code:
#define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
    ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
Im GPD aus dem DDK haben wir:
Code:
#define GPD_TYPE 40000

// ntddk.h
#define METHOD_BUFFERED                0
#define METHOD_IN_DIRECT               1
#define METHOD_OUT_DIRECT              2
#define METHOD_NEITHER                 3

// ... ntddk.h
#define FILE_ANY_ACCESS                0
#define FILE_SPECIAL_ACCESS   (FILE_ANY_ACCESS)
#define FILE_READ_ACCESS         ( 0x0001 )   // file & pipe
#define FILE_WRITE_ACCESS        ( 0x0002 )   // file & pipe
Beispiel:
Code:
_  CTL_CODE(GPD_TYPE, 0x443, METHOD_BUFFERED, FILE_WRITE_ACCESS)
== CTL_CODE(40000, 0x443, 0, 2)
== (40000 << 16) | (2 << 14) | (0x443 << 2) | 0 // C-Syntax
== (40000 shl 16) or (2 shl 14) or ($443 shl 2) or 0 // Delphi-Syntax
== ($9C40 shl 16) or ($2 shl 14) or ($443 shl 2) or 0 // Delphi-Syntax
== ($9C400000) or ($8000) or ($110C) or 0 // Delphi-Syntax
== ($9C400000) or ($8000) or ($110C) or 0 // Delphi-Syntax
== $9C40910C
Ich hoffe mal, daß ich richtig gerechnet habe. Hab's im Kopf gerechnet.
  Mit Zitat antworten Zitat
 


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 11:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz