PIPE_TRANSFER_TIMEOUT Use if you have an endpoint If set to 0, transfers will pend for which you expect transfers indefinitely until they are manually to complete within a specific canceled or they are completed time. normally. If set to a nonzero value, a timer starts when the request is sent down to the core USB stack (requests do not time out while in a WinUSB queue). When the timer expires, the request is canceled. There is a minor performance penalty because of managing timers. IGNORE_SHORT_PACKETS Use if you do not want short Reads complete only if an error packets to complete your read occurs, the request is canceled, or requests (this is rare). all the requested bytes have been received. This policy is valid only for bulk and interrupt IN endpoints with RAW_IO disabled. ALLOW_PARTIAL_READS Use if your device can legally If disabled and the device returns send more data than was more data than was requested, the requested (possible only if you request completes with an error. are requesting nonmultiples of If enabled, WinUSB immediately MaxPacketSize). completes read requests for zero Use if the application wants to bytes with success and does not read a few bytes to determine send the requests down the stack. how many total bytes to read. If enabled and the device returns This policy is valid only for bulk more data than was requested, and interrupt IN endpoints. WinUSB saves the excess data and prepends it to the next read request. AUTO_FLUSH Use if your device can send If an endpoint returns more bytes more data than was requested than requested, WinUSB discards and the application does not those bytes without error. require any extra data beyond Has no effect if what was requested (possible ALLOW_PARTIAL_READS is disabled. only if requesting of MaxPacketSize). This policy is valid only for bulk and interrupt IN endpoints where the ALLOW_PARTIAL _READS policy is enabled.
PIPE_TRANSFER_TIMEOUT Use if you have an endpoint for which you expect transfers to complete within a specific time. If set to 0, transfers will pend indefinitely until they are manually canceled or they are completed normally. If set to a nonzero value, a timer starts when the request is sent down to the core USB stack (requests do not time out while in a WinUSB queue). When the timer expires, the request is canceled. There is a minor performance penalty because of managing timers. IGNORE_SHORT_PACKETS Use if you do not want short packets to complete your read requests (this is rare). This policy is valid only for bulk and interrupt IN endpoints with RAW_IO disabled. Reads complete only if an error occurs, the request is canceled, or all the requested bytes have been received. ALLOW_PARTIAL_READS Use if your device can legally send more data than was requested (possible only if you are requesting nonmultiples of MaxPacketSize). Use if the application wants to read a few bytes to determine how many total bytes to read. This policy is valid only for bulk and interrupt IN endpoints. If disabled and the device returns more data than was requested, the request completes with an error. If enabled, WinUSB immediately completes read requests for zero bytes with success and does not send the requests down the stack. If enabled and the device returns more data than was requested, WinUSB saves the excess data and prepends it to the next read request. AUTO_FLUSH Use if your device can send more data than was requested and the application does not require any extra data beyond what was requested (possible only if requesting of MaxPacketSize). This policy is valid only for bulk and interrupt IN endpoints where the ALLOW_PARTIAL _READS policy is enabled. If an endpoint returns more bytes than requested, WinUSB discards those bytes without error. Has no effect if ALLOW_PARTIAL_READS is disabled.
WinUsb_HowTo.docx