Query the Value of a Semaphore | CodeGuru

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 […]

Written By
CodeGuru Staff
CodeGuru Staff
Mar 6, 1999
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

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

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.