Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

127 lines
2.1 KiB

/*++
Copyright (c) 2000-2001 Microsoft Corporation
Module Name:
notify.h
Abstract:
This module contains the notification list utilities.
A notification list is optionally synchronized with
a user specified UL_ERESOURCE, and provides an iterator
called UlNotifyAllEntries.
Author:
Michael Courage (mcourage) 25-Jan-2000
Revision History:
--*/
#ifndef _NOTIFY_H_
#define _NOTIFY_H_
#ifdef __cplusplus
extern "C" {
#endif
//
// forwards
//
typedef struct _UL_NOTIFY_ENTRY *PUL_NOTIFY_ENTRY;
//
// Notification function prototype.
// Invoked on a list notification.
//
// Arguments:
// pEntry - the entry that is being notified
// pv - "anything" parameter from UlNotifyEntries caller
//
// Return Value:
// Function returns TRUE to continue iterating through the list
// or FALSE to stop iterating.
//
typedef
BOOLEAN
(*PUL_NOTIFY_FUNC)(
IN PUL_NOTIFY_ENTRY pEntry,
IN PVOID pHost,
IN PVOID pv
);
//
// The head of a notification list
//
typedef struct _UL_NOTIFY_HEAD
{
//
// A list of UL_NOTIFY_ENTRYs
//
LIST_ENTRY ListHead;
PUL_ERESOURCE pResource;
} UL_NOTIFY_HEAD, *PUL_NOTIFY_HEAD;
//
// An entry in the notification list.
//
typedef struct _UL_NOTIFY_ENTRY
{
//
// List information.
//
LIST_ENTRY ListEntry;
PUL_NOTIFY_HEAD pHead;
//
// A pointer to the object containting this entry
//
PVOID pHost;
} UL_NOTIFY_ENTRY, *PUL_NOTIFY_ENTRY;
//
// Notification List functions
//
VOID
UlInitializeNotifyHead(
IN PUL_NOTIFY_HEAD pHead,
IN PUL_ERESOURCE pResource OPTIONAL
);
VOID
UlInitializeNotifyEntry(
IN PUL_NOTIFY_ENTRY pEntry,
IN PVOID pHost
);
VOID
UlAddNotifyEntry(
IN PUL_NOTIFY_HEAD pHead,
IN PUL_NOTIFY_ENTRY pEntry
);
VOID
UlRemoveNotifyEntry(
IN PUL_NOTIFY_ENTRY pEntry
);
VOID
UlNotifyAllEntries(
IN PUL_NOTIFY_FUNC pFunction,
IN PUL_NOTIFY_HEAD pHead,
IN PVOID pv OPTIONAL
);
#ifdef __cplusplus
}; // extern "C"
#endif
#endif // _NOTIFY_H_