ReactOS 0.4.15-dev-7704-gc07eb9f
strmini.h File Reference
#include <ntddk.h>
#include <windef.h>
#include <ks.h>
Include dependency graph for strmini.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _HW_TIME_CONTEXT
 
struct  _HW_EVENT_DESCRIPTOR
 
struct  _HW_CLOCK_OBJECT
 
struct  _HW_STREAM_OBJECT
 
struct  _HW_STREAM_HEADER
 
struct  _HW_STREAM_INFORMATION
 
struct  _HW_STREAM_DESCRIPTOR
 
struct  _STREAM_TIME_REFERENCE
 
struct  _STREAM_DATA_INTERSECT_INFO
 
struct  _STREAM_PROPERTY_DESCRIPTOR
 
struct  _STREAM_METHOD_DESCRIPTOR
 
struct  KSSCATTER_GATHER
 
struct  _HW_STREAM_REQUEST_BLOCK
 
union  _HW_STREAM_REQUEST_BLOCK::_CommandData
 
struct  _ACCESS_RANGE
 
struct  _PORT_CONFIGURATION_INFORMATION
 
struct  _HW_INITIALIZATION_DATA
 

Macros

#define STREAMAPI   __stdcall
 
#define STREAM_SYSTEM_TIME_MASK   ((STREAM_SYSTEM_TIME)0x00000001FFFFFFFF)
 
#define DebugPrint(x)
 
#define DEBUG_BREAKPOINT()
 
#define DEBUG_ASSERT(exp)
 
#define CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK   0x1
 
#define CLOCK_SUPPORT_CAN_READ_ONBOARD_CLOCK   0x2
 
#define CLOCK_SUPPORT_CAN_RETURN_STREAM_TIME   0x4
 
#define STREAM_REQUEST_BLOCK_SIZE   sizeof(STREAM_REQUEST_BLOCK)
 
#define SRB_HW_FLAGS_DATA_TRANSFER   0x01
 
#define SRB_HW_FLAGS_STREAM_REQUEST   0x2
 
#define STREAM_CLASS_VERSION_20   0x0200
 
#define StreamClassRegisterMinidriver   StreamClassRegisterAdapter
 

Typedefs

typedef PHYSICAL_ADDRESS STREAM_PHYSICAL_ADDRESS
 
typedef PHYSICAL_ADDRESSPSTREAM_PHYSICAL_ADDRESS
 
typedef struct _HW_TIME_CONTEXT HW_TIME_CONTEXT
 
typedef struct _HW_TIME_CONTEXTPHW_TIME_CONTEXT
 
typedef struct _HW_EVENT_DESCRIPTOR HW_EVENT_DESCRIPTOR
 
typedef struct _HW_EVENT_DESCRIPTORPHW_EVENT_DESCRIPTOR
 
typedef VOID(STREAMAPIPHW_RECEIVE_STREAM_DATA_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK *SRB)
 
typedef VOID(STREAMAPIPHW_RECEIVE_STREAM_CONTROL_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK *SRB)
 
typedef NTSTATUS(STREAMAPIPHW_EVENT_ROUTINE) (IN PHW_EVENT_DESCRIPTOR EventDescriptor)
 
typedef VOID(STREAMAPIPHW_CLOCK_FUNCTION) (IN PHW_TIME_CONTEXT HwTimeContext)
 
typedef struct _HW_CLOCK_OBJECT HW_CLOCK_OBJECT
 
typedef struct _HW_CLOCK_OBJECTPHW_CLOCK_OBJECT
 
typedef struct _HW_STREAM_OBJECT HW_STREAM_OBJECT
 
typedef struct _HW_STREAM_OBJECTPHW_STREAM_OBJECT
 
typedef struct _HW_STREAM_HEADER HW_STREAM_HEADER
 
typedef struct _HW_STREAM_HEADERPHW_STREAM_HEADER
 
typedef struct _HW_STREAM_INFORMATION HW_STREAM_INFORMATION
 
typedef struct _HW_STREAM_INFORMATIONPHW_STREAM_INFORMATION
 
typedef struct _HW_STREAM_DESCRIPTOR HW_STREAM_DESCRIPTOR
 
typedef struct _HW_STREAM_DESCRIPTORPHW_STREAM_DESCRIPTOR
 
typedef struct _STREAM_TIME_REFERENCE STREAM_TIME_REFERENCE
 
typedef struct _STREAM_TIME_REFERENCEPSTREAM_TIME_REFERENCE
 
typedef struct _STREAM_DATA_INTERSECT_INFO STREAM_DATA_INTERSECT_INFO
 
typedef struct _STREAM_DATA_INTERSECT_INFOPSTREAM_DATA_INTERSECT_INFO
 
typedef struct _STREAM_PROPERTY_DESCRIPTOR STREAM_PROPERTY_DESCRIPTOR
 
typedef struct _STREAM_PROPERTY_DESCRIPTORPSTREAM_PROPERTY_DESCRIPTOR
 
typedef struct _STREAM_METHOD_DESCRIPTOR STREAM_METHOD_DESCRIPTOR
 
typedef struct _STREAM_METHOD_DESCRIPTORPSTREAM_METHOD_DESCRIPTOR
 
typedef enum _SRB_COMMAND SRB_COMMAND
 
typedef struct KSSCATTER_GATHERPKSSCATTER_GATHER
 
typedef struct _HW_STREAM_REQUEST_BLOCK HW_STREAM_REQUEST_BLOCK
 
typedef struct _HW_STREAM_REQUEST_BLOCKPHW_STREAM_REQUEST_BLOCK
 
typedef struct _ACCESS_RANGE ACCESS_RANGE
 
typedef struct _ACCESS_RANGEPACCESS_RANGE
 
typedef struct _PORT_CONFIGURATION_INFORMATION PORT_CONFIGURATION_INFORMATION
 
typedef struct _PORT_CONFIGURATION_INFORMATIONPPORT_CONFIGURATION_INFORMATION
 
typedef VOID(STREAMAPIPHW_RECEIVE_DEVICE_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB)
 
typedef VOID(STREAMAPIPHW_CANCEL_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB)
 
typedef VOID(STREAMAPIPHW_REQUEST_TIMEOUT_HANDLER) (IN PHW_STREAM_REQUEST_BLOCK SRB)
 
typedef BOOLEAN(STREAMAPIPHW_INTERRUPT) (IN PVOID DeviceExtension)
 
typedef VOID(STREAMAPIPHW_TIMER_ROUTINE) (IN PVOID Context)
 
typedef VOID(STREAMAPIPHW_PRIORITY_ROUTINE) (IN PVOID Context)
 
typedef VOID(STREAMAPIPHW_QUERY_CLOCK_ROUTINE) (IN PHW_TIME_CONTEXT TimeContext)
 
typedef BOOLEAN(STREAMAPIPHW_RESET_ADAPTER) (IN PVOID DeviceExtension)
 
typedef enum _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE
 
typedef enum _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPEPSTREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE
 
typedef enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE
 
typedef enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPEPSTREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE
 
typedef struct _HW_INITIALIZATION_DATA HW_INITIALIZATION_DATA
 
typedef struct _HW_INITIALIZATION_DATAPHW_INITIALIZATION_DATA
 
typedef enum _STREAM_PRIORITY STREAM_PRIORITY
 
typedef enum _STREAM_PRIORITYPSTREAM_PRIORITY
 

Enumerations

enum  STREAM_DEBUG_LEVEL {
  DebugLevelFatal = 0 , DebugLevelError , DebugLevelWarning , DebugLevelInfo ,
  DebugLevelTrace , DebugLevelVerbose , DebugLevelMaximum
}
 
enum  TIME_FUNCTION { TIME_GET_STREAM_TIME , TIME_READ_ONBOARD_CLOCK , TIME_SET_ONBOARD_CLOCK }
 
enum  _SRB_COMMAND {
  SRB_READ_DATA , SRB_WRITE_DATA , SRB_GET_STREAM_STATE , SRB_SET_STREAM_STATE ,
  SRB_SET_STREAM_PROPERTY , SRB_GET_STREAM_PROPERTY , SRB_OPEN_MASTER_CLOCK , SRB_INDICATE_MASTER_CLOCK ,
  SRB_UNKNOWN_STREAM_COMMAND , SRB_SET_STREAM_RATE , SRB_PROPOSE_DATA_FORMAT , SRB_CLOSE_MASTER_CLOCK ,
  SRB_PROPOSE_STREAM_RATE , SRB_SET_DATA_FORMAT , SRB_GET_DATA_FORMAT , SRB_BEGIN_FLUSH ,
  SRB_END_FLUSH , SRB_GET_STREAM_INFO = 0x100 , SRB_OPEN_STREAM , SRB_CLOSE_STREAM ,
  SRB_OPEN_DEVICE_INSTANCE , SRB_CLOSE_DEVICE_INSTANCE , SRB_GET_DEVICE_PROPERTY , SRB_SET_DEVICE_PROPERTY ,
  SRB_INITIALIZE_DEVICE , SRB_CHANGE_POWER_STATE , SRB_UNINITIALIZE_DEVICE , SRB_UNKNOWN_DEVICE_COMMAND ,
  SRB_PAGING_OUT_DRIVER , SRB_GET_DATA_INTERSECTION , SRB_INITIALIZATION_COMPLETE , SRB_SURPRISE_REMOVAL ,
  SRB_DEVICE_METHOD , SRB_STREAM_METHOD , SRB_NOTIFY_IDLE_STATE
}
 
enum  STREAM_BUFFER_TYPE { PerRequestExtension , DmaBuffer , SRBDataBuffer }
 
enum  _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE {
  ReadyForNextStreamDataRequest , ReadyForNextStreamControlRequest , HardwareStarved , StreamRequestComplete ,
  SignalMultipleStreamEvents , SignalStreamEvent , DeleteStreamEvent , StreamNotificationMaximum
}
 
enum  _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE {
  ReadyForNextDeviceRequest , DeviceRequestComplete , SignalMultipleDeviceEvents , SignalDeviceEvent ,
  DeleteDeviceEvent , SignalMultipleDeviceInstanceEvents , DeviceNotificationMaximum
}
 
enum  _STREAM_PRIORITY { High , Dispatch , Low , LowToHigh }
 

Functions

VOID StreamClassAbortOutstandingRequests (_In_ PVOID HwDeviceExtension, _In_opt_ PHW_STREAM_OBJECT HwStreamObject, _In_ NTSTATUS Status)
 
VOID STREAMAPI StreamClassCallAtNewPriority (_In_opt_ PHW_STREAM_OBJECT StreamObject, _In_ PVOID HwDeviceExtension, _In_ STREAM_PRIORITY Priority, _In_ PHW_PRIORITY_ROUTINE PriorityRoutine, _In_ PVOID Context)
 
VOID STREAMAPI StreamClassCompleteRequestAndMarkQueueReady (_In_ PHW_STREAM_REQUEST_BLOCK Srb)
 
__analysis_noreturn VOID STREAMAPI StreamClassDebugAssert (_In_ PCHAR File, _In_ ULONG Line, _In_ PCHAR AssertText, _In_ ULONG AssertValue)
 
VOID __cdecl StreamClassDebugPrint (_In_ STREAM_DEBUG_LEVEL DebugPrintLevel, _In_ PCCHAR DebugMessage,...)
 
VOID __cdecl StreamClassDeviceNotification (IN STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension, IN PHW_STREAM_REQUEST_BLOCK pSrb, IN PKSEVENT_ENTRY EventEntry, IN GUID *EventSet, IN ULONG EventId)
 
VOID STREAMAPI StreamClassFilterReenumerateStreams (_In_ PVOID HwInstanceExtension, _In_ ULONG StreamDescriptorSize)
 
PVOID STREAMAPI StreamClassGetDmaBuffer (_In_ PVOID HwDeviceExtension)
 
PKSEVENT_ENTRY StreamClassGetNextEvent (_In_opt_ PVOID HwInstanceExtension_OR_HwDeviceExtension, _In_opt_ PHW_STREAM_OBJECT HwStreamObject, _In_opt_ GUID *EventGuid, _In_ ULONG EventItem, _In_opt_ PKSEVENT_ENTRY CurrentEvent)
 
STREAM_PHYSICAL_ADDRESS STREAMAPI StreamClassGetPhysicalAddress (_In_ PVOID HwDeviceExtension, _In_opt_ PHW_STREAM_REQUEST_BLOCK HwSRB, _In_ PVOID VirtualAddress, _In_ STREAM_BUFFER_TYPE Type, _Out_ ULONG *Length)
 
VOID StreamClassQueryMasterClock (_In_ PHW_STREAM_OBJECT HwStreamObject, _In_ HANDLE MasterClockHandle, _In_ TIME_FUNCTION TimeFunction, _In_ PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine)
 
 _IRQL_requires_max_ (DISPATCH_LEVEL) VOID STREAMAPI StreamClassQueryMasterClockSync(_In_ HANDLE MasterClockHandle
 
 _IRQL_requires_max_ (PASSIVE_LEVEL) BOOLEAN STREAMAPI StreamClassReadWriteConfig(_In_ PVOID HwDeviceExtension
 Queries information details about a security descriptor.
 
_In_ BOOLEAN _Inout_updates_bytes_ (Length) PVOID Buffer
 
VOID STREAMAPI StreamClassReenumerateStreams (_In_ PVOID HwDeviceExtension, _In_ ULONG StreamDescriptorSize)
 
 _IRQL_requires_max_ (APC_LEVEL) NTSTATUS StreamClassRegisterFilterWithNoKSPins(_In_ PDEVICE_OBJECT DeviceObject
 
_In_ const GUID _In_ ULONG _In_reads_ (PinCount) BOOL *PinDirection
 
_In_ const GUID _In_ ULONG _In_reads_opt_ (PinCount) GUID *CategoryList)
 
VOID STREAMAPI StreamClassScheduleTimer (_In_opt_ PHW_STREAM_OBJECT StreamObject, _In_ PVOID HwDeviceExtension, _In_ ULONG NumberOfMicroseconds, _In_ PHW_TIMER_ROUTINE TimerRoutine, _In_ PVOID Context)
 
VOID __cdecl StreamClassStreamNotification (_In_ STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE NotificationType, _In_ PHW_STREAM_OBJECT StreamObject,...)
 

Variables

__GNU_EXTENSION typedef unsigned __int64 STREAM_SYSTEM_TIME
 
__GNU_EXTENSION typedef unsigned __int64PSTREAM_SYSTEM_TIME
 
__GNU_EXTENSION typedef unsigned __int64 STREAM_TIMESTAMP
 
__GNU_EXTENSION typedef unsigned __int64PSTREAM_TIMESTAMP
 
_Inout_ PHW_TIME_CONTEXT TimeContext
 
_In_ BOOLEAN Read
 
_In_ BOOLEAN _In_ ULONG Offset
 
_In_ BOOLEAN _In_ ULONG _In_ ULONG Length
 
_In_ PVOID Argument2
 
_In_ PVOID _In_ PHW_INITIALIZATION_DATA HwInitializationData
 
_In_ const GUIDInterfaceClassGUID
 
_In_ const GUID _In_ ULONG PinCount
 

Macro Definition Documentation

◆ CLOCK_SUPPORT_CAN_READ_ONBOARD_CLOCK

#define CLOCK_SUPPORT_CAN_READ_ONBOARD_CLOCK   0x2

Definition at line 82 of file strmini.h.

◆ CLOCK_SUPPORT_CAN_RETURN_STREAM_TIME

#define CLOCK_SUPPORT_CAN_RETURN_STREAM_TIME   0x4

Definition at line 83 of file strmini.h.

◆ CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK

#define CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK   0x1

Definition at line 81 of file strmini.h.

◆ DEBUG_ASSERT

#define DEBUG_ASSERT (   exp)

Definition at line 33 of file strmini.h.

◆ DEBUG_BREAKPOINT

#define DEBUG_BREAKPOINT ( )

Definition at line 32 of file strmini.h.

◆ DebugPrint

#define DebugPrint (   x)

Definition at line 31 of file strmini.h.

◆ SRB_HW_FLAGS_DATA_TRANSFER

#define SRB_HW_FLAGS_DATA_TRANSFER   0x01

Definition at line 271 of file strmini.h.

◆ SRB_HW_FLAGS_STREAM_REQUEST

#define SRB_HW_FLAGS_STREAM_REQUEST   0x2

Definition at line 272 of file strmini.h.

◆ STREAM_CLASS_VERSION_20

#define STREAM_CLASS_VERSION_20   0x0200

Definition at line 340 of file strmini.h.

◆ STREAM_REQUEST_BLOCK_SIZE

#define STREAM_REQUEST_BLOCK_SIZE   sizeof(STREAM_REQUEST_BLOCK)

Definition at line 169 of file strmini.h.

◆ STREAM_SYSTEM_TIME_MASK

#define STREAM_SYSTEM_TIME_MASK   ((STREAM_SYSTEM_TIME)0x00000001FFFFFFFF)

Definition at line 9 of file strmini.h.

◆ STREAMAPI

#define STREAMAPI   __stdcall

Definition at line 8 of file strmini.h.

◆ StreamClassRegisterMinidriver

#define StreamClassRegisterMinidriver   StreamClassRegisterAdapter

Definition at line 498 of file strmini.h.

Typedef Documentation

◆ ACCESS_RANGE

◆ HW_CLOCK_OBJECT

◆ HW_EVENT_DESCRIPTOR

◆ HW_INITIALIZATION_DATA

◆ HW_STREAM_DESCRIPTOR

◆ HW_STREAM_HEADER

◆ HW_STREAM_INFORMATION

◆ HW_STREAM_OBJECT

◆ HW_STREAM_REQUEST_BLOCK

◆ HW_TIME_CONTEXT

◆ PACCESS_RANGE

◆ PHW_CANCEL_SRB

typedef VOID(STREAMAPI * PHW_CANCEL_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB)

Definition at line 309 of file strmini.h.

◆ PHW_CLOCK_FUNCTION

typedef VOID(STREAMAPI * PHW_CLOCK_FUNCTION) (IN PHW_TIME_CONTEXT HwTimeContext)

Definition at line 73 of file strmini.h.

◆ PHW_CLOCK_OBJECT

◆ PHW_EVENT_DESCRIPTOR

◆ PHW_EVENT_ROUTINE

typedef NTSTATUS(STREAMAPI * PHW_EVENT_ROUTINE) (IN PHW_EVENT_DESCRIPTOR EventDescriptor)

Definition at line 72 of file strmini.h.

◆ PHW_INITIALIZATION_DATA

◆ PHW_INTERRUPT

typedef BOOLEAN(STREAMAPI * PHW_INTERRUPT) (IN PVOID DeviceExtension)

Definition at line 311 of file strmini.h.

◆ PHW_PRIORITY_ROUTINE

typedef VOID(STREAMAPI * PHW_PRIORITY_ROUTINE) (IN PVOID Context)

Definition at line 313 of file strmini.h.

◆ PHW_QUERY_CLOCK_ROUTINE

typedef VOID(STREAMAPI * PHW_QUERY_CLOCK_ROUTINE) (IN PHW_TIME_CONTEXT TimeContext)

Definition at line 314 of file strmini.h.

◆ PHW_RECEIVE_DEVICE_SRB

typedef VOID(STREAMAPI * PHW_RECEIVE_DEVICE_SRB) (IN PHW_STREAM_REQUEST_BLOCK SRB)

Definition at line 308 of file strmini.h.

◆ PHW_RECEIVE_STREAM_CONTROL_SRB

typedef VOID(STREAMAPI * PHW_RECEIVE_STREAM_CONTROL_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK *SRB)

Definition at line 71 of file strmini.h.

◆ PHW_RECEIVE_STREAM_DATA_SRB

typedef VOID(STREAMAPI * PHW_RECEIVE_STREAM_DATA_SRB) (IN struct _HW_STREAM_REQUEST_BLOCK *SRB)

Definition at line 70 of file strmini.h.

◆ PHW_REQUEST_TIMEOUT_HANDLER

typedef VOID(STREAMAPI * PHW_REQUEST_TIMEOUT_HANDLER) (IN PHW_STREAM_REQUEST_BLOCK SRB)

Definition at line 310 of file strmini.h.

◆ PHW_RESET_ADAPTER

typedef BOOLEAN(STREAMAPI * PHW_RESET_ADAPTER) (IN PVOID DeviceExtension)

Definition at line 315 of file strmini.h.

◆ PHW_STREAM_DESCRIPTOR

◆ PHW_STREAM_HEADER

◆ PHW_STREAM_INFORMATION

◆ PHW_STREAM_OBJECT

◆ PHW_STREAM_REQUEST_BLOCK

◆ PHW_TIME_CONTEXT

◆ PHW_TIMER_ROUTINE

typedef VOID(STREAMAPI * PHW_TIMER_ROUTINE) (IN PVOID Context)

Definition at line 312 of file strmini.h.

◆ PKSSCATTER_GATHER

◆ PORT_CONFIGURATION_INFORMATION

◆ PPORT_CONFIGURATION_INFORMATION

◆ PSTREAM_DATA_INTERSECT_INFO

◆ PSTREAM_METHOD_DESCRIPTOR

◆ PSTREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE

◆ PSTREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE

◆ PSTREAM_PHYSICAL_ADDRESS

Definition at line 37 of file strmini.h.

◆ PSTREAM_PRIORITY

◆ PSTREAM_PROPERTY_DESCRIPTOR

◆ PSTREAM_TIME_REFERENCE

◆ SRB_COMMAND

◆ STREAM_DATA_INTERSECT_INFO

◆ STREAM_METHOD_DESCRIPTOR

◆ STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE

◆ STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE

◆ STREAM_PHYSICAL_ADDRESS

Definition at line 37 of file strmini.h.

◆ STREAM_PRIORITY

◆ STREAM_PROPERTY_DESCRIPTOR

◆ STREAM_TIME_REFERENCE

Enumeration Type Documentation

◆ _SRB_COMMAND

Enumerator
SRB_READ_DATA 
SRB_WRITE_DATA 
SRB_GET_STREAM_STATE 
SRB_SET_STREAM_STATE 
SRB_SET_STREAM_PROPERTY 
SRB_GET_STREAM_PROPERTY 
SRB_OPEN_MASTER_CLOCK 
SRB_INDICATE_MASTER_CLOCK 
SRB_UNKNOWN_STREAM_COMMAND 
SRB_SET_STREAM_RATE 
SRB_PROPOSE_DATA_FORMAT 
SRB_CLOSE_MASTER_CLOCK 
SRB_PROPOSE_STREAM_RATE 
SRB_SET_DATA_FORMAT 
SRB_GET_DATA_FORMAT 
SRB_BEGIN_FLUSH 
SRB_END_FLUSH 
SRB_GET_STREAM_INFO 
SRB_OPEN_STREAM 
SRB_CLOSE_STREAM 
SRB_OPEN_DEVICE_INSTANCE 
SRB_CLOSE_DEVICE_INSTANCE 
SRB_GET_DEVICE_PROPERTY 
SRB_SET_DEVICE_PROPERTY 
SRB_INITIALIZE_DEVICE 
SRB_CHANGE_POWER_STATE 
SRB_UNINITIALIZE_DEVICE 
SRB_UNKNOWN_DEVICE_COMMAND 
SRB_PAGING_OUT_DRIVER 
SRB_GET_DATA_INTERSECTION 
SRB_INITIALIZATION_COMPLETE 
SRB_SURPRISE_REMOVAL 
SRB_DEVICE_METHOD 
SRB_STREAM_METHOD 
SRB_NOTIFY_IDLE_STATE 

Definition at line 171 of file strmini.h.

171 {
179
190
191 SRB_GET_STREAM_INFO = 0x100,
206
207#if (NTDDI_VERSION >= NTDDI_WINXP)
210#if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1)
212#endif
213#endif
enum _SRB_COMMAND SRB_COMMAND
@ SRB_READ_DATA
Definition: strmini.h:172
@ SRB_PROPOSE_DATA_FORMAT
Definition: strmini.h:183
@ SRB_INDICATE_MASTER_CLOCK
Definition: strmini.h:180
@ SRB_SET_DEVICE_PROPERTY
Definition: strmini.h:197
@ SRB_END_FLUSH
Definition: strmini.h:189
@ SRB_INITIALIZATION_COMPLETE
Definition: strmini.h:204
@ SRB_DEVICE_METHOD
Definition: strmini.h:208
@ SRB_STREAM_METHOD
Definition: strmini.h:209
@ SRB_OPEN_DEVICE_INSTANCE
Definition: strmini.h:194
@ SRB_GET_DATA_INTERSECTION
Definition: strmini.h:203
@ SRB_BEGIN_FLUSH
Definition: strmini.h:188
@ SRB_SET_STREAM_STATE
Definition: strmini.h:175
@ SRB_OPEN_MASTER_CLOCK
Definition: strmini.h:178
@ SRB_SET_STREAM_RATE
Definition: strmini.h:182
@ SRB_INITIALIZE_DEVICE
Definition: strmini.h:198
@ SRB_GET_STREAM_INFO
Definition: strmini.h:191
@ SRB_UNKNOWN_STREAM_COMMAND
Definition: strmini.h:181
@ SRB_GET_STREAM_PROPERTY
Definition: strmini.h:177
@ SRB_OPEN_STREAM
Definition: strmini.h:192
@ SRB_CLOSE_DEVICE_INSTANCE
Definition: strmini.h:195
@ SRB_SET_STREAM_PROPERTY
Definition: strmini.h:176
@ SRB_WRITE_DATA
Definition: strmini.h:173
@ SRB_GET_DEVICE_PROPERTY
Definition: strmini.h:196
@ SRB_CHANGE_POWER_STATE
Definition: strmini.h:199
@ SRB_UNINITIALIZE_DEVICE
Definition: strmini.h:200
@ SRB_NOTIFY_IDLE_STATE
Definition: strmini.h:211
@ SRB_GET_DATA_FORMAT
Definition: strmini.h:187
@ SRB_CLOSE_MASTER_CLOCK
Definition: strmini.h:184
@ SRB_PROPOSE_STREAM_RATE
Definition: strmini.h:185
@ SRB_GET_STREAM_STATE
Definition: strmini.h:174
@ SRB_UNKNOWN_DEVICE_COMMAND
Definition: strmini.h:201
@ SRB_CLOSE_STREAM
Definition: strmini.h:193
@ SRB_SURPRISE_REMOVAL
Definition: strmini.h:205
@ SRB_SET_DATA_FORMAT
Definition: strmini.h:186
@ SRB_PAGING_OUT_DRIVER
Definition: strmini.h:202

◆ _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE

Enumerator
ReadyForNextDeviceRequest 
DeviceRequestComplete 
SignalMultipleDeviceEvents 
SignalDeviceEvent 
DeleteDeviceEvent 
SignalMultipleDeviceInstanceEvents 
DeviceNotificationMaximum 

Definition at line 328 of file strmini.h.

328 {
334#if (NTDDI_VERSION >= NTDDI_WINXP)
336#endif
enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE * PSTREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE
enum _STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE
@ SignalMultipleDeviceInstanceEvents
Definition: strmini.h:335
@ SignalDeviceEvent
Definition: strmini.h:332
@ SignalMultipleDeviceEvents
Definition: strmini.h:331
@ ReadyForNextDeviceRequest
Definition: strmini.h:329
@ DeleteDeviceEvent
Definition: strmini.h:333
@ DeviceNotificationMaximum
Definition: strmini.h:337
@ DeviceRequestComplete
Definition: strmini.h:330

◆ _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE

Enumerator
ReadyForNextStreamDataRequest 
ReadyForNextStreamControlRequest 
HardwareStarved 
StreamRequestComplete 
SignalMultipleStreamEvents 
SignalStreamEvent 
DeleteStreamEvent 
StreamNotificationMaximum 

Definition at line 317 of file strmini.h.

317 {
enum _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE * PSTREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE
@ ReadyForNextStreamDataRequest
Definition: strmini.h:318
@ SignalStreamEvent
Definition: strmini.h:323
@ StreamRequestComplete
Definition: strmini.h:321
@ SignalMultipleStreamEvents
Definition: strmini.h:322
@ ReadyForNextStreamControlRequest
Definition: strmini.h:319
@ StreamNotificationMaximum
Definition: strmini.h:325
@ HardwareStarved
Definition: strmini.h:320
@ DeleteStreamEvent
Definition: strmini.h:324
enum _STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE

◆ _STREAM_PRIORITY

Enumerator
High 
Dispatch 
Low 
LowToHigh 

Definition at line 377 of file strmini.h.

377 {
378 High,
379 Dispatch,
380 Low,
enum _STREAM_PRIORITY STREAM_PRIORITY
enum _STREAM_PRIORITY * PSTREAM_PRIORITY
@ High
Definition: strmini.h:378
@ LowToHigh
Definition: strmini.h:381
@ Low
Definition: strmini.h:380
@ Dispatch
Definition: strmini.h:379

◆ STREAM_BUFFER_TYPE

Enumerator
PerRequestExtension 
DmaBuffer 
SRBDataBuffer 

Definition at line 274 of file strmini.h.

274 {
276 DmaBuffer,
STREAM_BUFFER_TYPE
Definition: strmini.h:274
@ DmaBuffer
Definition: strmini.h:276
@ SRBDataBuffer
Definition: strmini.h:277
@ PerRequestExtension
Definition: strmini.h:275

◆ STREAM_DEBUG_LEVEL

Enumerator
DebugLevelFatal 
DebugLevelError 
DebugLevelWarning 
DebugLevelInfo 
DebugLevelTrace 
DebugLevelVerbose 
DebugLevelMaximum 

Definition at line 11 of file strmini.h.

11 {
STREAM_DEBUG_LEVEL
Definition: strmini.h:11
@ DebugLevelInfo
Definition: strmini.h:15
@ DebugLevelWarning
Definition: strmini.h:14
@ DebugLevelVerbose
Definition: strmini.h:17
@ DebugLevelTrace
Definition: strmini.h:16
@ DebugLevelMaximum
Definition: strmini.h:18
@ DebugLevelError
Definition: strmini.h:13
@ DebugLevelFatal
Definition: strmini.h:12

◆ TIME_FUNCTION

Enumerator
TIME_GET_STREAM_TIME 
TIME_READ_ONBOARD_CLOCK 
TIME_SET_ONBOARD_CLOCK 

Definition at line 41 of file strmini.h.

41 {
TIME_FUNCTION
Definition: strmini.h:41
@ TIME_READ_ONBOARD_CLOCK
Definition: strmini.h:43
@ TIME_GET_STREAM_TIME
Definition: strmini.h:42
@ TIME_SET_ONBOARD_CLOCK
Definition: strmini.h:44

Function Documentation

◆ _In_reads_()

_In_ const GUID _In_ ULONG _In_reads_ ( PinCount  )

◆ _In_reads_opt_()

_In_ const GUID _In_ ULONG _In_reads_opt_ ( PinCount  )

◆ _Inout_updates_bytes_()

_In_ BOOLEAN _Inout_updates_bytes_ ( Length  )

◆ _IRQL_requires_max_() [1/3]

_IRQL_requires_max_ ( APC_LEVEL  )

Definition at line 37 of file cddata.c.

254{
255 THREAD_CONTEXT ThreadContext = {0};
256 PIRP_CONTEXT IrpContext = NULL;
258
259#ifdef CD_SANITY
260 PVOID PreviousTopLevel;
261#endif
262
264
265#if DBG
266
267 KIRQL SaveIrql = KeGetCurrentIrql();
268
269#endif
270
272
274
276
277#ifdef CD_SANITY
278 PreviousTopLevel = IoGetTopLevelIrp();
279#endif
280
281 //
282 // Loop until this request has been completed or posted.
283 //
284
285 do {
286
287 //
288 // Use a try-except to handle the exception cases.
289 //
290
291 _SEH2_TRY {
292
293 //
294 // If the IrpContext is NULL then this is the first pass through
295 // this loop.
296 //
297
298 if (IrpContext == NULL) {
299
300 //
301 // Decide if this request is waitable an allocate the IrpContext.
302 // If the file object in the stack location is NULL then this
303 // is a mount which is always waitable. Otherwise we look at
304 // the file object flags.
305 //
306
308
309 Wait = TRUE;
310
311 } else {
312
313 Wait = CanFsdWait( Irp );
314 }
315
316 IrpContext = CdCreateIrpContext( Irp, Wait );
317
318 //
319 // Update the thread context information.
320 //
321
322 CdSetThreadContext( IrpContext, &ThreadContext );
323
324#ifdef CD_SANITY
325 NT_ASSERT( !CdTestTopLevel ||
326 SafeNodeType( IrpContext->TopLevel ) == CDFS_NTC_IRP_CONTEXT );
327#endif
328
329 //
330 // Otherwise cleanup the IrpContext for the retry.
331 //
332
333 } else {
334
335 //
336 // Set the MORE_PROCESSING flag to make sure the IrpContext
337 // isn't inadvertently deleted here. Then cleanup the
338 // IrpContext to perform the retry.
339 //
340
341 SetFlag( IrpContext->Flags, IRP_CONTEXT_FLAG_MORE_PROCESSING );
342 CdCleanupIrpContext( IrpContext, FALSE );
343 }
344
345 //
346 // Case on the major irp code.
347 //
348
349 switch (IrpContext->MajorFunction) {
350
351 case IRP_MJ_CREATE :
352
353 Status = CdCommonCreate( IrpContext, Irp );
354 break;
355
356 case IRP_MJ_CLOSE :
357
358 Status = CdCommonClose( IrpContext, Irp );
359 break;
360
361 case IRP_MJ_READ :
362
363 //
364 // If this is an Mdl complete request, don't go through
365 // common read.
366 //
367
368 if (FlagOn( IrpContext->MinorFunction, IRP_MN_COMPLETE )) {
369
370 Status = CdCompleteMdl( IrpContext, Irp );
371
372 } else {
373
374 Status = CdCommonRead( IrpContext, Irp );
375 }
376
377 break;
378
379 case IRP_MJ_WRITE :
380
381 Status = CdCommonWrite( IrpContext, Irp );
382 break;
383
385
386 Status = CdCommonQueryInfo( IrpContext, Irp );
387 break;
388
390
391 Status = CdCommonSetInfo( IrpContext, Irp );
392 break;
393
395
396 Status = CdCommonQueryVolInfo( IrpContext, Irp );
397 break;
398
400
401 Status = CdCommonDirControl( IrpContext, Irp );
402 break;
403
405
406 Status = CdCommonFsControl( IrpContext, Irp );
407 break;
408
410
411 Status = CdCommonDevControl( IrpContext, Irp );
412 break;
413
415
416 Status = CdCommonLockControl( IrpContext, Irp );
417 break;
418
419 case IRP_MJ_CLEANUP :
420
421 Status = CdCommonCleanup( IrpContext, Irp );
422 break;
423
424 case IRP_MJ_PNP :
425
426 Status = CdCommonPnp( IrpContext, Irp );
427 break;
428
429 case IRP_MJ_SHUTDOWN :
430
431 Status = CdCommonShutdown( IrpContext, Irp );
432 break;
433
434 default :
435
437 CdCompleteRequest( IrpContext, Irp, Status );
438 }
439
441
442 Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
443 } _SEH2_END;
444
445 } while (Status == STATUS_CANT_WAIT);
446
447#ifdef CD_SANITY
448 NT_ASSERT( !CdTestTopLevel ||
449 (PreviousTopLevel == IoGetTopLevelIrp()) );
450#endif
451
453
454 NT_ASSERT( SaveIrql == KeGetCurrentIrql( ));
455
456 return Status;
457}
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:251
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1214
_In_ PIRP Irp
Definition: csq.h:116
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
Status
Definition: gdiplustypes.h:25
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:159
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:158
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2793
#define IRP_MN_COMPLETE
Definition: iotypes.h:4420
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_MJ_SHUTDOWN
#define IRP_MJ_CLEANUP
#define NT_ASSERT
Definition: rtlfuncs.h:3310

◆ _IRQL_requires_max_() [2/3]

_IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 347 of file hardware.c.

1709{
1710 SendKey();
1712}
static VOID SendKey(VOID)
Definition: hardware.c:332
static VOID Wake(_In_ UCHAR Csn)
Definition: hardware.c:149
_In_ PISAPNP_LOGICAL_DEVICE LogicalDevice
Definition: isapnp.h:399

◆ _IRQL_requires_max_() [3/3]

_IRQL_requires_max_ ( PASSIVE_LEVEL  )

Queries information details about a security descriptor.

Computes the quota size of a security descriptor.

Assigns a security descriptor for a new object.

An extended function that assigns a security descriptor for a new object.

Frees a security descriptor.

An extended function that sets new information data to a security descriptor.

Modifies some information data about a security descriptor.

Parameters
[in]SecurityInformationSecurity information details to be queried from a security descriptor.
[out]SecurityDescriptorThe returned security descriptor with security information data.
[in,out]LengthThe returned length of a security descriptor.
[in,out]ObjectsSecurityDescriptorThe returned object security descriptor.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the specific information about the security descriptor has been queried. STATUS_BUFFER_TOO_SMALL is returned if the buffer size is too small to contain the queried info about the security descriptor.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
See SeSetSecurityDescriptorInfoEx.
Parameters
[in]ObjectIf specified, the function will use this arbitrary object that points to an object security descriptor.
[in]SecurityInformationSecurity information details to be set.
[in]SecurityDescriptorA security descriptor where its info is to be changed.
[in,out]ObjectsSecurityDescriptorThe returned pointer to security descriptor objects.
[in]AutoInheritFlagsFlags bitmask inheritation, influencing how the security descriptor can be inherited and if it can be in the first place.
[in]PoolTypePool type for the new security descriptor to allocate.
[in]GenericMappingThe generic mapping of access rights masks.
Returns
Returns STATUS_SUCCESS if the operations have been completed without problems and that new info has been set to the security descriptor. STATUS_NO_SECURITY_ON_OBJECT is returned if the object does not have a security descriptor. STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the new security descriptor with new info set has failed.
Parameters
[in]SecurityDescriptorA security descriptor to be freed from memory.
Returns
Returns STATUS_SUCCESS.
Parameters
[in]_ParentDescriptorA security descriptor of the parent object that is being created.
[in]_ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]ObjectTypeThe type of the new object.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]AutoInheritFlagsAutomatic inheritance flags that influence how access control entries within ACLs from security descriptors are inherited.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
Returns STATUS_SUCCESS if the operations have been completed successfully and that the security descriptor has been assigned to the new object. STATUS_NO_TOKEN is returned if the caller hasn't supplied a valid argument to a security subject context. STATUS_INVALID_OWNER is returned if the caller hasn't supplied a parent descriptor that belongs to the main user (owner). STATUS_INVALID_PRIMARY_GROUP is returned by the same reason as with the previous NTSTATUS code. The two NTSTATUS codes are returned if the calling thread stated that the owner and/or group is defaulted to the parent descriptor (SEF_DEFAULT_OWNER_FROM_PARENT and/or SEF_DEFAULT_GROUP_FROM_PARENT respectively). STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the descriptor buffer has failed. A failure NTSTATUS is returned otherwise.
Parameters
[in]ParentDescriptorA security descriptor of the parent object that is being created.
[in]ExplicitDescriptorAn explicit security descriptor that is applied to a new object.
[out]NewDescriptorThe new allocated security descriptor.
[in]IsDirectoryObjectSet this to TRUE if the newly created object is a directory object, otherwise set this to FALSE.
[in]SubjectContextSecurity subject context of the new object.
[in]GenericMappingGeneric mapping of access mask rights.
[in]PoolTypeThis parameter is unused.
Returns
See SeAssignSecurityEx.
Parameters
[in]SecurityDescriptorA security descriptor.
[out]QuotaInfoSizeThe returned quota size of the given security descriptor to the caller. The function may return 0 to this parameter if the descriptor doesn't have a group or a discretionary access control list (DACL) even.
Returns
Returns STATUS_SUCCESS if the quota size of a security descriptor has been computed successfully. STATUS_UNKNOWN_REVISION is returned if the security descriptor has an invalid revision.

Definition at line 923 of file Messaging.c.

75{
76 PFLT_SERVER_PORT_OBJECT PortObject;
78
79 /* The caller must allow at least one connection */
80 if (MaxConnections == 0)
81 {
83 }
84
85 /* The request must be for a kernel handle */
86 if (!(ObjectAttributes->Attributes & OBJ_KERNEL_HANDLE))
87 {
89 }
90
91 /*
92 * Get rundown protection on the target to stop the owner
93 * from unloading whilst this port object is open. It gets
94 * removed in the FltpServerPortClose callback
95 */
97 if (!NT_SUCCESS(Status))
98 {
99 return Status;
100 }
101
102 /* Create the server port object for this filter */
107 NULL,
109 0,
110 0,
111 (PVOID *)&PortObject);
112 if (NT_SUCCESS(Status))
113 {
114 /* Zero out the struct */
115 RtlZeroMemory(PortObject, sizeof(FLT_SERVER_PORT_OBJECT));
116
117 /* Increment the ref count on the target filter */
119
120 /* Setup the filter port object */
121 PortObject->Filter = Filter;
125 PortObject->Cookie = ServerPortCookie;
126 PortObject->MaxConnections = MaxConnections;
127
128 /* Insert the object */
129 Status = ObInsertObject(PortObject,
130 NULL,
132 0,
133 NULL,
135 if (NT_SUCCESS(Status))
136 {
137 /* Lock the connection list */
139
140 /* Add the new port object to the connection list and increment the count */
143
144 /* Unlock the connection list*/
146 }
147 }
148
149 if (!NT_SUCCESS(Status))
150 {
151 /* Allow the filter to be cleaned up */
153 }
154
155 return Status;
156}
static const INTERNET_PORT ServerPort
Definition: CWebService.cpp:11
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1801
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1877
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1875
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1874
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1876
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
static LONG MaxConnections
#define KernelMode
Definition: asm.h:34
#define FILE_READ_DATA
Definition: nt_native.h:628
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
Definition: obhandle.c:2935
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
Definition: oblife.c:1039
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121
LIST_ENTRY mList
Definition: fltmgrint.h:56
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

◆ StreamClassAbortOutstandingRequests()

VOID StreamClassAbortOutstandingRequests ( _In_ PVOID  HwDeviceExtension,
_In_opt_ PHW_STREAM_OBJECT  HwStreamObject,
_In_ NTSTATUS  Status 
)

◆ StreamClassCallAtNewPriority()

VOID STREAMAPI StreamClassCallAtNewPriority ( _In_opt_ PHW_STREAM_OBJECT  StreamObject,
_In_ PVOID  HwDeviceExtension,
_In_ STREAM_PRIORITY  Priority,
_In_ PHW_PRIORITY_ROUTINE  PriorityRoutine,
_In_ PVOID  Context 
)

◆ StreamClassCompleteRequestAndMarkQueueReady()

VOID STREAMAPI StreamClassCompleteRequestAndMarkQueueReady ( _In_ PHW_STREAM_REQUEST_BLOCK  Srb)

◆ StreamClassDebugAssert()

__analysis_noreturn VOID STREAMAPI StreamClassDebugAssert ( _In_ PCHAR  File,
_In_ ULONG  Line,
_In_ PCHAR  AssertText,
_In_ ULONG  AssertValue 
)

◆ StreamClassDebugPrint()

VOID __cdecl StreamClassDebugPrint ( _In_ STREAM_DEBUG_LEVEL  DebugPrintLevel,
_In_ PCCHAR  DebugMessage,
  ... 
)

◆ StreamClassDeviceNotification()

VOID __cdecl StreamClassDeviceNotification ( IN STREAM_MINIDRIVER_DEVICE_NOTIFICATION_TYPE  NotificationType,
IN PVOID  HwDeviceExtension,
IN PHW_STREAM_REQUEST_BLOCK  pSrb,
IN PKSEVENT_ENTRY  EventEntry,
IN GUID EventSet,
IN ULONG  EventId 
)

Definition at line 265 of file driver.c.

272{
273 PHW_STREAM_REQUEST_BLOCK_EXT RequestBlock;
275 {
276 RequestBlock = (PHW_STREAM_REQUEST_BLOCK_EXT)pSrb;
277
278 KeSetEvent(&RequestBlock->Event, 0, FALSE);
279 return;
280 }
281
283}
#define UNIMPLEMENTED
Definition: debug.h:115
struct HW_STREAM_REQUEST_BLOCK_EXT * PHW_STREAM_REQUEST_BLOCK_EXT
#define KeSetEvent(pEvt, foo, foo2)
Definition: env_spec_w32.h:476
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
Definition: wdfdevice.h:1024

◆ StreamClassFilterReenumerateStreams()

VOID STREAMAPI StreamClassFilterReenumerateStreams ( _In_ PVOID  HwInstanceExtension,
_In_ ULONG  StreamDescriptorSize 
)

◆ StreamClassGetDmaBuffer()

PVOID STREAMAPI StreamClassGetDmaBuffer ( _In_ PVOID  HwDeviceExtension)

◆ StreamClassGetNextEvent()

PKSEVENT_ENTRY StreamClassGetNextEvent ( _In_opt_ PVOID  HwInstanceExtension_OR_HwDeviceExtension,
_In_opt_ PHW_STREAM_OBJECT  HwStreamObject,
_In_opt_ GUID EventGuid,
_In_ ULONG  EventItem,
_In_opt_ PKSEVENT_ENTRY  CurrentEvent 
)

◆ StreamClassGetPhysicalAddress()

STREAM_PHYSICAL_ADDRESS STREAMAPI StreamClassGetPhysicalAddress ( _In_ PVOID  HwDeviceExtension,
_In_opt_ PHW_STREAM_REQUEST_BLOCK  HwSRB,
_In_ PVOID  VirtualAddress,
_In_ STREAM_BUFFER_TYPE  Type,
_Out_ ULONG Length 
)

◆ StreamClassQueryMasterClock()

VOID StreamClassQueryMasterClock ( _In_ PHW_STREAM_OBJECT  HwStreamObject,
_In_ HANDLE  MasterClockHandle,
_In_ TIME_FUNCTION  TimeFunction,
_In_ PHW_QUERY_CLOCK_ROUTINE  ClockCallbackRoutine 
)

◆ StreamClassReenumerateStreams()

VOID STREAMAPI StreamClassReenumerateStreams ( _In_ PVOID  HwDeviceExtension,
_In_ ULONG  StreamDescriptorSize 
)

◆ StreamClassScheduleTimer()

VOID STREAMAPI StreamClassScheduleTimer ( _In_opt_ PHW_STREAM_OBJECT  StreamObject,
_In_ PVOID  HwDeviceExtension,
_In_ ULONG  NumberOfMicroseconds,
_In_ PHW_TIMER_ROUTINE  TimerRoutine,
_In_ PVOID  Context 
)

◆ StreamClassStreamNotification()

VOID __cdecl StreamClassStreamNotification ( _In_ STREAM_MINIDRIVER_STREAM_NOTIFICATION_TYPE  NotificationType,
_In_ PHW_STREAM_OBJECT  StreamObject,
  ... 
)

Variable Documentation

◆ Argument2

_In_ PVOID Argument2

Definition at line 495 of file strmini.h.

◆ HwInitializationData

_In_ PVOID _In_ PHW_INITIALIZATION_DATA HwInitializationData

Definition at line 496 of file strmini.h.

◆ InterfaceClassGUID

Definition at line 504 of file strmini.h.

◆ Length

Definition at line 482 of file strmini.h.

◆ Offset

Definition at line 481 of file strmini.h.

◆ PinCount

◆ PSTREAM_SYSTEM_TIME

__GNU_EXTENSION typedef unsigned __int64 * PSTREAM_SYSTEM_TIME

Definition at line 38 of file strmini.h.

◆ PSTREAM_TIMESTAMP

__GNU_EXTENSION typedef unsigned __int64 * PSTREAM_TIMESTAMP

Definition at line 39 of file strmini.h.

◆ Read

◆ STREAM_SYSTEM_TIME

__GNU_EXTENSION typedef unsigned __int64 STREAM_SYSTEM_TIME

Definition at line 38 of file strmini.h.

◆ STREAM_TIMESTAMP

__GNU_EXTENSION typedef unsigned __int64 STREAM_TIMESTAMP

Definition at line 39 of file strmini.h.

◆ TimeContext

Definition at line 472 of file strmini.h.