AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

File handle readonly?

Ein Thema von Neutral General · begonnen am 3. Jun 2008 · letzter Beitrag vom 3. Jun 2008
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

File handle readonly?

  Alt 3. Jun 2008, 17:31
Hi,

Ich suche eine Möglichkeit herauszufinden ob ein Filehandle nur readonly ist.. Also nur GENERIC_READ.

Habe in der Windows Unit die Funktion MSDN-Library durchsuchenGetFileInformationByHandle gefunden, aber da wird glaube ich nichts zurückgegeben was ich gebrauchen kann.

Würde mich über Hilfe freuen

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: File handle readonly?

  Alt 3. Jun 2008, 17:40
Es gibt wahrscheinlich auch einen dokumentierten Weg, aber zur Not kannst du es mit MSDN-Library durchsuchenNtQueryObject probieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: File handle readonly?

  Alt 3. Jun 2008, 18:22
Hi Apollonius,

Diese Funktion scheint die richtige zu sein, aber ich musste sie mir selbst importieren und entweder hat das nicht so ganz funktioniert oder ich rufe die Funktion falsch auf.

(ist jetzt alles nur mal dahingeklatscht

Delphi-Quellcode:
interface

type
  OBJECT_INFORMATION_CLASS = (ObjectBasicInformation,
                              ObjectNameInformation,
                              ObjectTypeInformation,
                              ObjectAllInformation,
                              ObjectDataInformation);

   PObjectBasicInformation = ^TObjectBasicInformation;
   TObjectBasicInformation = packed record
     Attributes: Cardinal;
     GrantedAccess: ACCESS_MASK;
     HandleCount: Cardinal;
     PointerCount: Cardinal;
     Reserved: Array[0..9] of Cardinal;
   end;

   function NtQueryObject(Handle: THandle;
                          ObjectInformationClass: OBJECT_INFORMATION_CLASS;
                          out ObjectInformation: Pointer;
                          ObjectInformationLength: ULONG;
                          out ReturnLength: PULONG): Cardinal; external 'ntdll.dll';
Aufruf:

Delphi-Quellcode:
var inf: Pointer;
    size: ULONG;
      l : PULONG;
begin
  size := SizeOf(TObjectBasicInformation);
  NtQueryObject(FileHandle,ObjectBasicInformation,inf,size,l);
end;
Habe auch schon gegoogelt und in der DP gesucht, aber nichts gefunden was mir geholfen hätte. Hab herausgefunden das die Aufrufkonvention "NTAPI" ist?!

Zitat:
NTSTATUS NTAPI NtQueryObject (
IN HANDLE ObjectHandle,
IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
OUT PVOID ObjectInformation,
IN ULONG ObjectInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
Ich weiß grad einfach nicht weiter... Bin überfordert
Michael
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: File handle readonly?

  Alt 3. Jun 2008, 18:27
NTAPI = WINAPI = CALLBACK = StdCall
Lass die Outs weg oder verwende keine Zeiger. Die Outs in C sind nur ein Hinweis, verändern aber eigentlich nichts, ganz im Gegensatz zu Delphi, wo ein Zeiger auf eine Variable vom angegebenen Datentyp übergeben wird.
Außerdem rufst du die Funktion wie fast alle anderen WinAPI-Funktionen auf, die Daten variabler Größe speichern: DU musst den Puffer allozieren, nicht die Funktion selbst.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: File handle readonly?

  Alt 3. Jun 2008, 18:32
Hi,

Zitat von Apollonius:
NTAPI = WINAPI = CALLBACK = StdCall
Lass die Outs weg oder verwende keine Zeiger. Die Outs in C sind nur ein Hinweis, verändern aber eigentlich nichts, ganz im Gegensatz zu Delphi, wo ein Zeiger auf eine Variable vom angegebenen Datentyp übergeben wird.
Außerdem rufst du die Funktion wie fast alle anderen WinAPI-Funktionen auf, die Daten variabler Größe speichern: DU musst den Puffer allozieren, nicht die Funktion selbst.
Das mit stdcall dachte ich mir fast und ich bins auch gewohnt den speicher für APIs zu allozieren, hatte aber eben nicht funktioniert weil die Definition falsch war und da hab ichs mal so probiert..

Auf die Sache mit den outs wär ich jedoch nicht gekommen Danke, es funktioniert jetzt

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:52 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