private static unsafe string? HandleNfdResult(sw_nfdresult result, byte* outPath) { switch (result) { case sw_nfdresult.SW_NFD_ERROR: var errPtr = sw_NFD_GetError(); throw new Exception(MarshalHelper.PtrToStringUTF8(errPtr)); case sw_nfdresult.SW_NFD_OKAY: var str = MarshalHelper.PtrToStringUTF8(outPath)!; sw_NFD_Free(outPath); return str; case sw_nfdresult.SW_NFD_CANCEL: return null; default: throw new ArgumentOutOfRangeException(); } }