Function parameter name with "In" prefix?

Why some functions have parameters with “In” prefix in parameter name?
I understand the “Out” prefix for parameter name, but what does “In” prefix mean? There is no info about it in Coding Standards or elsewhere.

As far as I know “out” indicates that it is passed by reference and expects something to be returned using the reference while “in” doesn’t and can be passed by const ref or by value. Correct me if I am wrong.

It is additional information and often left out I guess since you can just look at the parameter and you will know if it is const or not.

But some functions have const & parameters without “In” prefix, for example

UEngine::AddOnScreenDebugMessage(... const FString& DebugMessage, bool bNewerOnTop, const FVector2D& TextScale)

And some have const & parameters with “In” prefix, for example

FReply NativeOnFocusReceived (const FGeometry& InGeometry, const FFocusEvent& InFocusEvent)

It isn’t clear what is the meaning of this “In” prefixes…

Putting “In” at the beginning of a parameter name has no mechanical function, it’s just to communicate to the person reading the API that the parameter is undoubtedly an input parameter as opposed to an output parameter. In other words, they are trying to reassure you that the caller will gain no new information from this referenced variable once the call to the function completes. This is mostly used in an API that contains mixed “out” variables along with the regular “in” kind.

In terms of code standards though, you’ll find a lot of standards heavily discourage ever using “out” variables because they are confusing and sometimes even impact performance negatively. Generally parameters should just be the “in” kind, and if you do this the need to ever use “in” at the beginning of a parameter name becomes completely pointless since it is implied that all of your API uses “in” params.