「監査制御 (プロセスの事前選択マスク)」で説明しているように、監査レコードは、実行環境に対して設定されたプロセスの事前選択マスクに基づいて選択されます。また、auditwrite(3) ルーチンは、AW_PRESELECT トークンを有し、そのトークンは、監査マスク構造体をその値としてとります。このトークンは監査マスクの値の設定に基づいてクラスを監査する、auditwrite(3) に対する後続の呼び出しを起動します。これは、AW_NOPRESELECT トークンが auditwrite(3) に渡されて、環境事前選択マスクを使用するように指示するまで続きます。
次の例は、この例のサンプルクラス (ec) の失敗を監査するプロセスの事前選択マスクを作成し、このマスクを AW_PRESELECT トークンを使用して auditwrite(3) ルーチンに渡して、有効にします。これにより、この例のクラスに属する失敗したイベントだけが監査トレールに記録されます。事前選択が無効にされる時点で、環境プロセス事前選択マスク (この例では、クラス内のイベントの成功または失敗を監査する) が復元されます。
char succ_or_fail; u_int retval; au_mask_t mask; /* ec クラス内のイベントの失敗を監査するためのマスクを作成する */ getauditflagsbin("-ec", &mask); /* 新しい事前選択マスクを使用する */ auditwrite(AW_PRESELECT, &mask, AW_END); /* 監査レコードを生成するコード */ auditwrite( AW_TEXT, "Second signature needed," AW_APPEND, AW_END); if (signature_request() == -1) { succ_or_fail = -1; retval = -2; } else { succ_or_fail = 0; retval = 1; } auditwrite( AW_EVENT, "AUE_second_signature", AW_RETURN succ_or_fail, retval, AW_WRITE, AW_END); /* 環境の事前選択マスクを復元をする */ /* ec クラスのイベントの成功または失敗が再び監査される */ auditwrite(AW_NOPRESELECT, AW_END);