Share via

Clarification needed: Relationship between DCB.fParity and DCB.Parity in Win32 serial configuration

Bindhu Priya Chanda 40 Reputation points
2026-02-25T07:00:08.23+00:00

I am configuring a serial port using the Win32 API (DCB structure).

According to the documentation:

  • fParity specifies whether parity checking is enabled
  • Parity specifies the parity scheme (EVEN, ODD, etc.)

In my testing with an FTDI-based UART device:

  • dcb.fParity is set to FALSE
  • dcb.Parity is set to EVENPARITY

However, the resulting serial transmission appears to still include a parity bit.

My question is purely about documentation clarity:

Is the Parity field expected to influence transmission format even when fParity is FALSE?

If so, is there official documentation that describes this interaction explicitly?

If not, could the documentation be clarified to explain how fParity and Parity are interpreted by the Windows serial stack and drivers?

Windows development | Windows API - Win32
0 comments No comments
{count} votes

Answer accepted by question author
  1. Jack Dang (WICLOUD CORPORATION) 14,575 Reputation points Microsoft External Staff Moderator
    2026-02-25T09:22:23.4+00:00

    Hi @Bindhu Priya Chanda ,

    Thanks for reaching out.

    Is the Parity field expected to influence transmission format even when fParity is FALSE?

    Conceptually, the two fields in the DCB structure serve different purposes:

    • fParity controls parity error checking behavior on the receiver side.
    • Parity defines the line format, meaning whether a parity bit is actually included in each transmitted frame, and if so, what type.

    In practice, the Windows serial stack and many UART drivers (including common FTDI drivers) treat Parity as part of the physical framing configuration. So if Parity is set to EVENPARITY, the driver may configure the hardware to transmit 7E1 or 8E1 framing regardless of fParity.

    fParity = FALSE does not necessarily mean “do not transmit a parity bit.” It typically means “do not perform parity error checking.” The framing is primarily determined by the Parity field.

    So to fully disable parity on the line, you should set:

    • dcb.Parity = NOPARITY
    • dcb.fParity = FALSE

    Setting only fParity = FALSE while leaving Parity = EVENPARITY can still result in a parity bit being transmitted, depending on the driver.

    If so, is there official documentation that describes this interaction explicitly?

    The official DCB reference describes both fields independently but does not explicitly document their interaction or clarify that Parity controls framing at the driver/hardware level even if fParity is FALSE.

    If not, could the documentation be clarified to explain how fParity and Parity are interpreted by the Windows serial stack and drivers?

    That would certainly be a reasonable documentation improvement. It would be helpful to submit this through the Feedback Hub app in Windows. When submitting there, at “Choose a category”, select Developer Platform, and then in the dropdown right next to it, select API Feedback. This ensures your report reaches the right engineering team and allows you to include detailed reproduction steps and environment information. 

    Hope this helps! If my answer was helpful - kindly follow the instructions here so others with the same problem can benefit as well.

    1 person found this answer helpful.

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.