diff --git a/src/ffi/win_bindings.rs b/src/ffi/win_bindings.rs index aa7b5449fd..4924d22cb4 100644 --- a/src/ffi/win_bindings.rs +++ b/src/ffi/win_bindings.rs @@ -352,6 +352,7 @@ pub const QUIC_STREAM_OPEN_FLAGS_QUIC_STREAM_OPEN_FLAG_UNIDIRECTIONAL: QUIC_STRE pub const QUIC_STREAM_OPEN_FLAGS_QUIC_STREAM_OPEN_FLAG_0_RTT: QUIC_STREAM_OPEN_FLAGS = 2; pub const QUIC_STREAM_OPEN_FLAGS_QUIC_STREAM_OPEN_FLAG_DELAY_ID_FC_UPDATES: QUIC_STREAM_OPEN_FLAGS = 4; +pub const QUIC_STREAM_OPEN_FLAGS_QUIC_STREAM_OPEN_FLAG_EXTERNAL_BUFFERS: QUIC_STREAM_OPEN_FLAGS = 8; pub type QUIC_STREAM_OPEN_FLAGS = ::std::os::raw::c_int; pub const QUIC_STREAM_START_FLAGS_QUIC_STREAM_START_FLAG_NONE: QUIC_STREAM_START_FLAGS = 0; pub const QUIC_STREAM_START_FLAGS_QUIC_STREAM_START_FLAG_IMMEDIATE: QUIC_STREAM_START_FLAGS = 1; @@ -5568,6 +5569,9 @@ pub type QUIC_STREAM_RECEIVE_COMPLETE_FN = ::std::option::Option; pub type QUIC_STREAM_RECEIVE_SET_ENABLED_FN = ::std::option::Option HRESULT>; +pub type QUIC_STREAM_PROVIDE_RECEIVE_BUFFERS_FN = ::std::option::Option< + unsafe extern "C" fn(Stream: HQUIC, BufferCount: u32, Buffers: *const QUIC_BUFFER) -> HRESULT, +>; pub type QUIC_DATAGRAM_SEND_FN = ::std::option::Option< unsafe extern "C" fn( Connection: HQUIC, @@ -5611,10 +5615,11 @@ pub struct QUIC_API_TABLE { pub DatagramSend: QUIC_DATAGRAM_SEND_FN, pub ConnectionResumptionTicketValidationComplete: QUIC_CONNECTION_COMP_RESUMPTION_FN, pub ConnectionCertificateValidationComplete: QUIC_CONNECTION_COMP_CERT_FN, + pub StreamProvideReceiveBuffers: QUIC_STREAM_PROVIDE_RECEIVE_BUFFERS_FN, } #[allow(clippy::unnecessary_operation, clippy::identity_op)] const _: () = { - ["Size of QUIC_API_TABLE"][::std::mem::size_of::() - 248usize]; + ["Size of QUIC_API_TABLE"][::std::mem::size_of::() - 256usize]; ["Alignment of QUIC_API_TABLE"][::std::mem::align_of::() - 8usize]; ["Offset of field: QUIC_API_TABLE::SetContext"] [::std::mem::offset_of!(QUIC_API_TABLE, SetContext) - 0usize]; @@ -5682,6 +5687,8 @@ const _: () = { QUIC_API_TABLE, ConnectionCertificateValidationComplete ) - 240usize]; + ["Offset of field: QUIC_API_TABLE::StreamProvideReceiveBuffers"] + [::std::mem::offset_of!(QUIC_API_TABLE, StreamProvideReceiveBuffers) - 248usize]; }; pub const QUIC_STATUS_SUCCESS: QUIC_STATUS = 0; pub const QUIC_STATUS_PENDING: QUIC_STATUS = 459749; diff --git a/src/inc/quic_platform.h b/src/inc/quic_platform.h index 4e56a87fd5..cf75a686f8 100644 --- a/src/inc/quic_platform.h +++ b/src/inc/quic_platform.h @@ -148,6 +148,7 @@ typedef struct CXPLAT_SLIST_ENTRY { #define QUIC_POOL_ROUTE_RESOLUTION_WORKER 'A4cQ' // Qc4A - QUIC route resolution worker #define QUIC_POOL_ROUTE_RESOLUTION_OPER 'B4cQ' // Qc4B - QUIC route resolution operation #define QUIC_POOL_EXECUTION_CONFIG 'C4cQ' // Qc4C - QUIC execution config +#define QUIC_POOL_APP_BUFFER_CHUNK 'D4cQ' // Qc4D - QUIC receive chunk for app buffers typedef enum CXPLAT_THREAD_FLAGS { CXPLAT_THREAD_FLAG_NONE = 0x0000,