Query the Value of a Semaphore

Have you ever wanted to take a look at the current value of a semaphore whilst debugging your code, but don't want to alter the value of the semaphore by ReleaseSemaphore?

Well, Win32 does not give you the possibilty to get the value, but there is a call in ntdll.dll which allows to query the semaphore. So the 'QuerySemaphore.lib' simply provides a small static lib, which wraps the NtQuerySemaphore call in ntdll.dll.

QuerySemaphore.lib is selfcontained, so your program does not need ntdll.lib to resolve the call to NtQuerySemaphore.

A simple example

	#include "QuerySemaphore.h"

	LONG	Value, v1;

	// Create a semaphore
	HANDLE	Handle = CreateSemaphore(NULL, 4, 10, NULL);

	// Query the content of a semaphore
	QuerySemaphore(Handle, &Value);

	// Acquire Semaphore
	WaitForSingleObject(Handle, INFINITE);
	
	// Query again
	QuerySemaphore(Handle, &Value);

So all you need is to include 'QuerySemaphore.h' in your sourcecode and add 'QuerySemaphore.lib' to the libraries you are linking against.

Download demo project - 2 KB

Download source - 8 KB



Comments

  • NtQuerySemaphore.lib

    Posted by Brad on 06/11/2012 07:07pm

    First of all, nice work! 13 years after your post this code is still very useful! Where did you get NtQuerySemaphore.lib from? Did you build it? If so, can you post that source or provide some instructions? I'm trying to link it to a 64 bit application and it is failing... (I'm assuming I need a 64 bit version of NtQuerySemaphore.lib) Thank you!

    Reply
  • RE: What about W95/W98?

    Posted by Legacy on 03/14/1999 12:00am

    Originally posted by: Hermann Schinagl

    > And also, does this function provide proper locking on multiprocessor
    > systems ??

    Yes it does, because it is a System call in Windows NT.

    > What Abot Win95/98 ??? Is there any way to query semaphore value
    > in 95/98 ?

    Uhh, I don't know.. But I guess it it is very different, because
    the architecture of W95/W98 is different to Windows NT.

    Ciao Hermann



    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The 3rd Platform of computing, based around the four pillars of mobile computing, social media, big data and analytics, and cloud, is redefining what IT infrastructure needs to provide. Endpoint solutions must meet not only traditional data protection requirements, but also a new set of requirements driven by the explosion in mobile computing. This IDC white paper explores the customer challenges associated with safeguarding data residing on various endpoint devices, including laptops, tablets, and …

  • Tintri smart storage addresses the mismatch between storage and the demands of virtualization. Built on the industry's first and leading intelligent application-aware architecture, VMstore and Tintri Global Center have the intelligence to deliver unparalleled performance and efficiency and end-to-end insights into the infrastructure, while allowing for unmatched VM control.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date