ReactOS 0.4.17-dev-1037-g720d112
ucxsstreams.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS USB Host Controller Extension
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: UCX static streams object interface
5 * COPYRIGHT: Copyright 2026 Justin Miller <justinmiller100@gmail.com>
6 */
7
8#pragma once
9
10#include "ucxglobals.h"
11#include "ucxfuncenum.h"
12#include "ucxobjects.h"
13
15
16typedef struct _STREAM_INFO
17{
19 WDFQUEUE WdfQueue;
22
24VOID
27 _Out_ PSTREAM_INFO StreamInfo,
28 _In_ WDFQUEUE WdfQueue,
29 _In_ ULONG StreamId)
30{
31 RtlZeroMemory(StreamInfo, sizeof(*StreamInfo));
32 StreamInfo->Size = sizeof(*StreamInfo);
33 StreamInfo->WdfQueue = WdfQueue;
34 StreamInfo->StreamId = StreamId;
35}
36
37/* Class entry points */
38
39typedef
42 _In_ PUCX_DRIVER_GLOBALS DriverGlobals,
43 _In_ UCXSSTREAMS StaticStreams,
44 _In_ PSTREAM_INFO StreamInfo);
45
46typedef
50(NTAPI *PFN_UCXSTATICSTREAMSCREATE)(
51 _In_ PUCX_DRIVER_GLOBALS DriverGlobals,
52 _In_ UCXENDPOINT Endpoint,
55 _Out_ UCXSSTREAMS *StaticStreams);
56
58VOID
61 _In_ UCXSSTREAMS StaticStreams,
62 _In_ PSTREAM_INFO StreamInfo)
63{
65
68 SetStreamInfo(UcxDriverGlobals, StaticStreams, StreamInfo);
69}
70
76UcxStaticStreamsCreate(
77 _In_ UCXENDPOINT Endpoint,
80 _Out_ UCXSSTREAMS *StaticStreams)
81{
82 PFN_UCXSTATICSTREAMSCREATE Create;
83
86}
87
#define VOID
Definition: acefi.h:82
LONG NTSTATUS
Definition: precomp.h:26
_In_ ULONG Attributes
Definition: dispmprt.h:1077
#define NTSTATUS
Definition: precomp.h:19
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
_In_ UCXHUB_DEVICE_CONTEXT _In_ UCXENDPOINT Endpoint
Definition: hubucx.h:238
#define _Inout_
Definition: no_sal2.h:162
#define _Must_inspect_result_
Definition: no_sal2.h:62
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
WDFQUEUE WdfQueue
Definition: ucxsstreams.h:19
ULONG StreamId
Definition: ucxsstreams.h:20
#define NTAPI
Definition: typedefs.h:36
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
uint32_t ULONG
Definition: typedefs.h:59
@ UcxStaticStreamsCreateTableIndex
Definition: ucxfuncenum.h:33
@ UcxStaticStreamsSetStreamInfoTableIndex
Definition: ucxfuncenum.h:32
#define UCX_BOUND_FUNCTION(PfnType, Slot)
Definition: ucxfuncenum.h:40
WDF_EXTERN_C_START struct _UCX_DRIVER_GLOBALS * PUCX_DRIVER_GLOBALS
PUCX_DRIVER_GLOBALS UcxDriverGlobals
Definition: ucxstub.c:32
struct _UCXSSTREAMS_INIT * PUCXSSTREAMS_INIT
Definition: ucxobjects.h:21
VOID(NTAPI * PFN_UCXSTATICSTREAMSSETSTREAMINFO)(_In_ PUCX_DRIVER_GLOBALS DriverGlobals, _In_ UCXSSTREAMS StaticStreams, _In_ PSTREAM_INFO StreamInfo)
Definition: ucxsstreams.h:41
_Must_inspect_result_ _In_ UCXENDPOINT _Inout_ PUCXSSTREAMS_INIT * StaticStreamsInit
Definition: ucxsstreams.h:53
FORCEINLINE VOID NTAPI UcxStaticStreamsSetStreamInfo(_In_ UCXSSTREAMS StaticStreams, _In_ PSTREAM_INFO StreamInfo)
Definition: ucxsstreams.h:60
WDF_EXTERN_C_START struct _STREAM_INFO STREAM_INFO
_Must_inspect_result_ _IRQL_requires_(PASSIVE_LEVEL) NTSTATUS(NTAPI *PFN_UCXSTATICSTREAMSCREATE)(_In_ PUCX_DRIVER_GLOBALS DriverGlobals
Definition: ucxsstreams.h:48
Create
Definition: ucxsstreams.h:84
FORCEINLINE VOID NTAPI STREAM_INFO_INIT(_Out_ PSTREAM_INFO StreamInfo, _In_ WDFQUEUE WdfQueue, _In_ ULONG StreamId)
Definition: ucxsstreams.h:26
WDF_EXTERN_C_START struct _STREAM_INFO * PSTREAM_INFO
_Must_inspect_result_ _In_ UCXENDPOINT _Inout_ PUCXSSTREAMS_INIT _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXSSTREAMS * StaticStreams
Definition: ucxsstreams.h:55
_Must_inspect_result_ _In_ UCXENDPOINT _Inout_ PUCXSSTREAMS_INIT _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
Definition: ucxsstreams.h:54
_Must_inspect_result_ _In_ UCXENDPOINT Endpoint
Definition: ucxsstreams.h:52
#define WDF_EXTERN_C_END
Definition: wdf.h:38
#define WDF_EXTERN_C_START
Definition: wdf.h:37
#define FORCEINLINE
Definition: wdftypes.h:67