PS_CREATE_NOTIFY_INFO structure (ntddk.h)

The PS_CREATE_NOTIFY_INFO structure provides information about a newly created process.

Syntax

typedef struct _PS_CREATE_NOTIFY_INFO {
  SIZE_T              Size;
  union {
    ULONG Flags;
    struct {
      ULONG FileOpenNameAvailable : 1;
      ULONG IsSubsystemProcess : 1;
      ULONG Reserved : 30;
    };
  };
  HANDLE              ParentProcessId;
  CLIENT_ID           CreatingThreadId;
  struct _FILE_OBJECT *FileObject;
  PCUNICODE_STRING    ImageFileName;
  PCUNICODE_STRING    CommandLine;
  NTSTATUS            CreationStatus;
} PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO;

Members

Size

The size, in bytes, of this structure. The operating system uses this size to indicate the type of structure that it passes to CreateProcessNotifyEx. Currently, this member is always sizeof(PS_CREATE_NOTIFY_INFO).

Flags

Reserved. Use the FileOpenNameAvailable member instead.

FileOpenNameAvailable

A Boolean value that specifies whether the ImageFileName member contains the exact file name that is used to open the process executable file.

IsSubsystemProcess

A Boolean value that indicates the type of process subsystem is a subsystem other than Win32.

IsSubsystemProcess is only populated for subsystem processes other than Win32 when a driver has registered through PsSetCreateProcessNotifyRoutineEx2 with a type that allows for notifications from subsystem processes. When IsSubsystemProcess is set, the FileObject, ImageFileName, and CommandLine may be NULL. Drivers should use ProcessSubsystemInformation to query the subsystem type if needed.

For more information, see NtQueryInformationProcess.

Reserved

Reserved for system use.

ParentProcessId

The process ID of the parent process for the new process. Note that the parent process is not necessarily the same process as the process that created the new process. The new process can inherit certain properties of the parent process, such as handles or shared memory. (The process ID of the process creator is given by CreatingThreadId->UniqueProcess.)

CreatingThreadId

The process ID and thread ID of the process and thread that created the new process. CreatingThreadId->UniqueProcess contains the process ID, and CreatingThreadId->UniqueThread contains the thread ID.

FileObject

A pointer to the file object for the process executable file.

If IsSubsystemProcess is TRUE, this value may be NULL.

ImageFileName

A pointer to a UNICODE_STRING string that holds the file name of the executable. If the FileOpenNameAvailable member is TRUE, the string specifies the exact file name that is used to open the executable file. If FileOpenNameAvailable is FALSE, the operating system might provide only a partial name.

If IsSubsystemProcess is TRUE, this value maybe NULL.

CommandLine

A pointer to a UNICODE_STRING string that holds the command that is used to execute the process. If the command is not available, CommandLine is NULL.

If IsSubsystemProcess is TRUE, this value maybe NULL.

CreationStatus

The NTSTATUS value to return for the process-creation operation. Drivers can change this value to an error code to prevent the process from being created.

Requirements

Requirement Value
Header ntddk.h (include Ntddk.h)

See also

CreateProcessNotifyEx

PsSetCreateProcessNotifyRoutineEx

UNICODE_STRING