LdrDllNotification callback function

[This function may be changed or removed from Windows without further notice.]

A notification callback function specified with the LdrRegisterDllNotification function. The loader calls this function when a DLL is first loaded.

Warning: It is unsafe for the notification callback function to call functions in any DLL.

Syntax

VOID CALLBACK LdrDllNotification(
  _In_     ULONG                       NotificationReason,
  _In_     PCLDR_DLL_NOTIFICATION_DATA NotificationData,
  _In_opt_ PVOID                       Context
);

Parameters

NotificationReason [in]

The reason that the notification callback function was called. This parameter can be one of the following values.

Value Meaning
LDR_DLL_NOTIFICATION_REASON_LOADED
1
The DLL was loaded. The NotificationData parameter points to an LDR_DLL_LOADED_NOTIFICATION_DATA structure.
LDR_DLL_NOTIFICATION_REASON_UNLOADED
2
The DLL was unloaded. The NotificationData parameter points to an LDR_DLL_UNLOADED_NOTIFICATION_DATA structure.

 

NotificationData [in]

A pointer to a constant LDR_DLL_NOTIFICATION union that contains notification data. This union has the following definition:

typedef union _LDR_DLL_NOTIFICATION_DATA {
    LDR_DLL_LOADED_NOTIFICATION_DATA Loaded;
    LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded;
} LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA;

The LDR_DLL_LOADED_NOTIFICATION_DATA structure has the following definition:

typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA {
    ULONG Flags;                    //Reserved.
    PCUNICODE_STRING FullDllName;   //The full path name of the DLL module.
    PCUNICODE_STRING BaseDllName;   //The base file name of the DLL module.
    PVOID DllBase;                  //A pointer to the base address for the DLL in memory.
    ULONG SizeOfImage;              //The size of the DLL image, in bytes.
} LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA;

The LDR_DLL_UNLOADED_NOTIFICATION_DATA structure has the following definition:

typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA {
    ULONG Flags;                    //Reserved.
    PCUNICODE_STRING FullDllName;   //The full path name of the DLL module.
    PCUNICODE_STRING BaseDllName;   //The base file name of the DLL module.
    PVOID DllBase;                  //A pointer to the base address for the DLL in memory.
    ULONG SizeOfImage;              //The size of the DLL image, in bytes.
} LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA;

Context [in, optional]

A pointer to context data for the callback function.

Return value

This callback function does not return a value.

Remarks

The notification callback function is called before dynamic linking takes place.

Requirements

Requirement Value
Minimum supported client
Windows Vista [desktop apps only]
Minimum supported server
Windows Server 2008 [desktop apps only]

See also

LdrRegisterDllNotification

LdrUnregisterDllNotification