![]() |
Re: Anzahl von Semaphore-Objekten bestimmen.
Delphi-Quellcode:
const
SemaphoreBasicInformation = 0; type SEMAPHORE_BASIC_INFORMATION = record CurrentCount: Integer; MaximumCount: Integer; end; PSEMAPHORE_BASIC_INFORMATION = ^SEMAPHORE_BASIC_INFORMATION; function NtQuerySemaphore(SemaphoreHandle: THandle; SemaphoreInformationClass: ULONG; SemaphoreInformation: Pointer; SemaphoreInformationLength: ULONG; ReturnLength: PULONG): Integer; stdcall; external 'ntdll.dll'; function RtlNtStatusToDosError(StatusCode: Integer): DWORD; stdcall; external 'ntdll.dll'; function GetSemaphoreInfo(hSemaphore: THandle; var CurrentCount: Integer; var MaximumCount: Integer): Boolean; var sbi: SEMAPHORE_BASIC_INFORMATION; Status: Integer; begin Result := false; Status := NtQuerySemaphore(hSemaphore, SemaphoreBasicInformation, @sbi, SizeOf(SEMAPHORE_BASIC_INFORMATION), nil); if Status >= 0 then begin CurrentCount := sbi.CurrentCount; MaximumCount := sbi.MaximumCount; Result := true; end else SetLastError(RtlNtStatusToDosError(Status)); end; |
Re: Anzahl von Semaphore-Objekten bestimmen.
Hi,
super :thumb: Danke dir :love: Ich werds gleich heut Nachmittag ausprobieren :) mfG mirage228 |
Re: Anzahl von Semaphore-Objekten bestimmen.
Man sollte nicht auf undokumentierte API Funktionen sein Programm aufbauen. Sie sind nicht umsonst von MS nicht dokumentiert und somit nicht offiziell zur Verwendung frei gegeben. Warum kann man hier nachlesen:
![]() |
Re: Anzahl von Semaphore-Objekten bestimmen.
Luckie, ich weiss ;) allerdings ist es bei der funktion mehr als unwahrscheinlich (siehe 2. Parameter) - ich bin auch gegen die Benutzung undokumentierter API ;) aber ich benutz den code bzw die Programme die darauf basieren ja nicht ;)
Die meisten Probleme die Raymond Chen anspricht sind wirklich haertere dinge, z.b. dass Programme ein bestimmtes Stack layout erwarten, einfach so im NTFS filesystem rumpfuschen oder absolut undokumentierte interne shell strukturen die sich schon immer staendig geaendert haben. Wie gesagt ich halte es fuer sehr unwahrscheinlich dass diese Funktion geaendert wird da sie mit Sicherheit auch vom ein oder anderen Treiber verwendet wird (ZwQuerySemaphore()). |
Re: Anzahl von Semaphore-Objekten bestimmen.
Insbesondere nachdem Microsoft endlich NtQueryInformationProcess() und NtQueryInformationThread() dokumentiert hat, da liegt nahe dass die anderen auch in naher Zukunft noch dokumentiert werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 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