Einzelnen Beitrag anzeigen

Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Handle Access Rights - Verständnisfrage

  Alt 9. Jan 2011, 12:04
Hallo Delphifreunde!

Mal wieder stelle ich eine entscheidende Oberflächlichkeit im mikroweichen Entwicklernetzwerk (MSDN) fest, und zwar geht es um die SetThreadAffinityMask Function. Dort steht

„This handle must have the THREAD_SET_INFORMATION or THREAD_SET_LIMITED_INFORMATION access right and the THREAD_QUERY_INFORMATION or THREAD_QUERY_LIMITED_INFORMATION access right. For more information, see Thread Security and Access Rights.

Windows Server 2003 and Windows XP/2000: The handle must have the THREAD_SET_INFORMATION and THREAD_QUERY_INFORMATION access rights.“

Wie löst man die "and"s and "or"s logisch auf? Ab Windows Vista wäre die 1:1-Umsetzung so:

Code:
SetThreadAffinityMask(OpenThread((THREAD_SET_INFORMATION or Thread_Query_Information) and (THREAD_QUERY_INFORMATION or THREAD_QUERY_LIMITED_INFORMATION),
                                  true,
                                  ThreadID),
                      ThreadAffinityMask)
Doch das funktioniert nicht, der Rückgabewert zeigt das an. Außerdem stellte ich fest, daß für „Windows davor“ die Erläuterung „The handle must have the THREAD_SET_INFORMATION and THREAD_QUERY_INFORMATION access rights“ auch nicht 1:1 umsetzbar ist, denn:

Code:
SetThreadAffinityMask(OpenThread(THREAD_SET_INFORMATION and Thread_Query_Information,true,ThreadID),ThreadAffinityMask)
funktioniert nämlich nach meiner Beobachtung nicht, sondern nur:

Code:
SetThreadAffinityMask(OpenThread(THREAD_SET_INFORMATION or Thread_Query_Information,true,ThreadID),ThreadAffinityMask)
Weiß jemand, was genau gemeint ist?

Im voraus vielen Dank!

Mit Gruß

Delphi-Laie

Geändert von Delphi-Laie ( 9. Jan 2011 um 12:24 Uhr)
  Mit Zitat antworten Zitat