Creating Windows events using Win32 C language

 

 

Compiler: Visual C++ Express Edition 2005

Compiled on Platform: Windows Xp Pro SP2

Target platform: none, just for learning and fun

Header file: Standard and Windows

Additional library: Windows Platform SDK

Additional project setting: Set project to be compiled as C

Project -> your_project_name Properties -> Configuration Properties -> C/C++ -> Advanced -> Compiled As: Compiled as C Code (/TC)

Other info: non-CLR or unmanaged.

To do: Creating Windows events in C programming

To show: The various Windows threads and processes functions

 

 

 

// For WinXp

#define _WIN32_WINNT 0x0501

#include <windows.h>

#include <stdio.h>

 

int main(void)

{

HANDLE hEvents[2];

DWORD i, dwEvent;

 

// Create two event objects.

for (i = 0; i < 2; i++)

{

hEvents[i] = CreateEvent(

NULL, // no security attributes

FALSE, // auto-reset event object

FALSE, // initial state is non-signaled

NULL); // unnamed object

 

if (hEvents[i] == NULL)

{

printf("CreateEvent() error: %u\n", GetLastError());

ExitProcess(0);

}

else

printf("CreateEvent() #%u is OK.\n", i);

}

// The creating thread waits for other threads or processes to signal the event objects.

dwEvent = WaitForMultipleObjects(

2, // number of objects in array

hEvents, // array of objects

FALSE, // wait for any

5000); // 5000 ms

 

// Return value indicates which event is signaled.

switch (dwEvent)

{

// hEvent[0] was signaled.

case WAIT_OBJECT_0 + 0:

// TODO: Perform tasks required by this event.

printf("hEvent[%u] was signaled.\n", i);

break;

// hEvent[1] was signaled.

case WAIT_OBJECT_0 + 1:

// TODO: Perform tasks required by this event.

printf("hEvent[%u] was signaled.\n", i);

break;

// Return value is invalid.

default:

printf("Wait error: %u\n", GetLastError());

// Exit peacefully...

ExitProcess(0);

}

return 0;

}

 

Output example:

 

CreateEvent() #0 is OK.

CreateEvent() #1 is OK.

Wait error: 0

Press any key to continue . . .

 

 

C and C++ Programming Resources | C & C++ Code Example Index