internal static uint gss_init_sec_context(
     out uint minorStatus,
     IntPtr claimantCredHandle,
     ref IntPtr contextHandle,
     IntPtr targetName,
     ref GssOidDesc mechType,
     uint reqFlags,
     uint timeReq,
     IntPtr inputChanBindings,
     ref GssBufferStruct inputToken,
     IntPtr actualMechType,
     out GssBufferStruct outputToken,
     IntPtr retFlags,
     IntPtr timeRec)
 {
     return(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
         ? Environment.Is64BitProcess
             ? Win64.gss_init_sec_context(out minorStatus, claimantCredHandle, ref contextHandle, targetName,
                                          ref mechType, reqFlags, timeReq, inputChanBindings, ref inputToken, actualMechType,
                                          out outputToken, retFlags, timeRec)
             : Win32.gss_init_sec_context(out minorStatus, claimantCredHandle, ref contextHandle, targetName,
                                          ref mechType, reqFlags, timeReq, inputChanBindings, ref inputToken, actualMechType,
                                          out outputToken, retFlags, timeRec)
         : Linux.gss_init_sec_context(out minorStatus, claimantCredHandle, ref contextHandle, targetName,
                                      ref mechType, reqFlags, timeReq, inputChanBindings, ref inputToken, actualMechType,
                                      out outputToken, retFlags, timeRec));
 }