microsoft / win32metadata

Tooling to generate metadata for Win32 APIs in the Windows SDK.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RM_PROCESS_INFO::TSSessionId is unsigned but RM_INVALID_TS_SESSION is signed

KalleOlaviNiemitalo opened this issue · comments

RM_INVALID_TS_SESSION is intended to be compared to RM_PROCESS_INFO::TSSessionId but they have different types; one is signed and the other is unsigned. That then requires an unchecked cast when these are compared in C#.

// Uninitialized value for TS Session ID
#define RM_INVALID_TS_SESSION -1
DWORD TSSessionId; // Terminal Service session ID of
// process (-1 if n/a)

Can the same type be used for both? I guess it would have to be the unsigned type, for consistency with WTS_CURRENT_SESSION, WTSQuerySessionInformationW, and others.

Similar considerations may apply to RM_INVALID_PROCESS vs. RM_UNIQUE_PROCESS::dwProcessId, but I haven't found any formal documentation on the intended use of RM_INVALID_PROCESS.

// Uninitialized value for Process ID
#define RM_INVALID_PROCESS -1