すべての GSS-API 関数は、関数の成功または失敗に関する情報を提供する 2 種類のコードを返します。どちらの種類のステータスコードも OM_uint32 値として戻されます。
次に、この 2 種類の戻りコードについて説明します。
メジャーステータスコード
メジャーステータスコードは次のエラーを示します。
汎用 GSS-API ルーチンエラー (ルーチンに無効なメカニズムを指定したなど)
特定の GSS-API 言語バインディングに固有の呼び出しエラー (関数の引数が読み書きできない、引数の形式が間違っているなど)
両方のタイプのエラー
さらに、メジャーステータスコードは、ルーチンの状態に関する補足情報も提供できます。たとえば、処理が終了していない、トークンの送信順が間違っている、などを示すコードが返されます。何もエラーが発生しなかった場合、ルーチンは値が GSS_S_COMPLETE のメジャーステータス値を戻します。
メジャーステータスコードは次のようにして返されます。
OM_uint32 major_status ; /* status returned by GSS-API */ major_status = gss_generic_function(arg1, arg2 ...);
メジャーステータス戻りコードはほかの OM_uint32 と同じように処理できます。たとえば、次のコードを考えます。
OM_uint32 maj_stat; maj_sta = gss_generic_function(arg1, arg2 ...); if (maj_stat == GSS_CREDENTIALS_EXPIRED) <do something...>
メジャーステータスコードは、マクロ GSS_ROUTINE_ERROR()、GSS_CALLING_ERROR()、および GSS_SUPPLEMENTARY_INFO() で処理できます。GSS-API Status Codes では、メジャーステータスコードの読み取り方法について説明しているほか、GSS-API ステータスコードの一覧を提供しています。
マイナーステータスコード
マイナーステータスコードは実際のメカニズムから戻されます。これらのコードについては、このドキュメントでは具体的に説明しません。
すべての GSS-API 関数は最初の引数として OM_uint32 型のマイナーステータスコードを受け取ります。関数が呼び出し元の関数に制御を戻す際に、その OM_uint32 引数にマイナーステータスコードが格納されます。次のコードを考えます。
OM_uint32 *minor_status ; /* status returned by mech */ major_status = gss_generic_function(&minor_status, arg1, arg2 ...);
致命的なエラーを示すメジャーステータスコードが返される場合でも、minor_status パラメータは GSS-API ルーチンによって必ず設定されます。その他のほとんどの出力パラメータには値が設定されません。ただし、ルーチンによって割り当てられた記憶領域へのポインタを返すべき出力パラメータには、NULL が設定されます。NULL は、記憶領域が実際には割り当てられなかったことを示します。このようなポインタに関連する長さフィールド (gss_buffer_desc 構造体を参照) は 0 に設定されます。そのような場合、アプリケーションはこれらのバッファーを解放する必要はありません。