Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenksiface.h
Go to the documentation of this file.
00001 #pragma once 00002 00003 #include <ntddk.h> 00004 #include <ks.h> 00005 00006 #if !defined(DEFINE_ABSTRACT_UNKNOWN) 00007 00008 #define DEFINE_ABSTRACT_UNKNOWN() \ 00009 STDMETHOD_(NTSTATUS, QueryInterface)(THIS_ \ 00010 REFIID InterfaceId, \ 00011 PVOID* Interface)PURE; \ 00012 STDMETHOD_(ULONG,AddRef)(THIS) PURE; \ 00013 STDMETHOD_(ULONG,Release)(THIS) PURE; 00014 #endif 00015 00016 typedef struct 00017 { 00018 LIST_ENTRY Entry; 00019 LIST_ENTRY ObjectList; 00020 PRKMUTEX BagMutex; 00021 PVOID DeviceHeader; 00022 }KSIOBJECT_BAG, *PKSIOBJECT_BAG; 00023 00024 00025 /***************************************************************************** 00026 * IKsAllocator 00027 ***************************************************************************** 00028 */ 00029 00030 #undef INTERFACE 00031 #define INTERFACE IKsAllocator 00032 00033 DECLARE_INTERFACE_(IKsAllocator, IUnknown) 00034 { 00035 DEFINE_ABSTRACT_UNKNOWN() 00036 00037 STDMETHOD_(NTSTATUS, DispatchDeviceIoControl)(THIS_ 00038 IN PDEVICE_OBJECT DeviceObject, 00039 IN PIRP Irp) PURE; 00040 00041 STDMETHOD_(NTSTATUS, Close)(THIS) PURE; 00042 00043 STDMETHOD_(NTSTATUS, AllocateFrame)(THIS_ 00044 IN PVOID * OutFrame) PURE; 00045 00046 STDMETHOD_(VOID, FreeFrame)(THIS_ 00047 IN PVOID OutFrame) PURE; 00048 }; 00049 00050 00051 /***************************************************************************** 00052 * IKsPin 00053 ***************************************************************************** 00054 */ 00055 00056 #undef INTERFACE 00057 #define INTERFACE IKsClock 00058 00059 DECLARE_INTERFACE_(IKsClock, IUnknown) 00060 { 00061 DEFINE_ABSTRACT_UNKNOWN() 00062 }; 00063 00064 /***************************************************************************** 00065 * IKsTransport 00066 ***************************************************************************** 00067 */ 00068 00069 #undef INTERFACE 00070 #define INTERFACE IKsTransport 00071 00072 DECLARE_INTERFACE_(IKsTransport, IUnknown) 00073 { 00074 DEFINE_ABSTRACT_UNKNOWN() 00075 }; 00076 00077 00078 /***************************************************************************** 00079 * IKsPin 00080 ***************************************************************************** 00081 */ 00082 00083 #undef INTERFACE 00084 #define INTERFACE IKsPin 00085 00086 struct KSPTRANSPORTCONFIG; 00087 00088 DECLARE_INTERFACE_(IKsPin, IUnknown) 00089 { 00090 DEFINE_ABSTRACT_UNKNOWN() 00091 00092 STDMETHOD_(NTSTATUS, TransferKsIrp)(THIS_ 00093 IN PIRP Irp, 00094 IN IKsTransport **OutTransport) PURE; 00095 00096 STDMETHOD_(VOID, DiscardKsIrp)(THIS_ 00097 IN PIRP Irp, 00098 IN IKsTransport * *OutTransport) PURE; 00099 00100 STDMETHOD_(NTSTATUS, Connect)(THIS_ 00101 IN IKsTransport * TransportIn, 00102 OUT IKsTransport ** OutTransportIn, 00103 OUT IKsTransport * *OutTransportOut, 00104 IN KSPIN_DATAFLOW DataFlow) PURE; 00105 00106 STDMETHOD_(NTSTATUS, SetDeviceState)(THIS_ 00107 IN KSSTATE OldState, 00108 IN KSSTATE NewState, 00109 IN IKsTransport * *OutTransport) PURE; 00110 00111 STDMETHOD_(VOID, SetResetState)(THIS_ 00112 IN KSRESET ResetState, 00113 OUT IKsTransport * * OutTransportOut) PURE; 00114 00115 STDMETHOD_(NTSTATUS, GetTransportConfig)(THIS_ 00116 IN struct KSPTRANSPORTCONFIG * TransportConfig, 00117 OUT IKsTransport ** OutTransportIn, 00118 OUT IKsTransport ** OutTransportOut) PURE; 00119 00120 STDMETHOD_(NTSTATUS, SetTransportConfig)(THIS_ 00121 IN struct KSPTRANSPORTCONFIG const * TransportConfig, 00122 OUT IKsTransport ** OutTransportIn, 00123 OUT IKsTransport ** OutTransportOut) PURE; 00124 00125 STDMETHOD_(NTSTATUS, ResetTransportConfig)(THIS_ 00126 OUT IKsTransport ** OutTransportIn, 00127 OUT IKsTransport ** OutTransportOut) PURE; 00128 00129 STDMETHOD_(PKSPIN, GetStruct)(THIS) PURE; 00130 STDMETHOD_(PKSPROCESSPIN, GetProcessPin)(THIS) PURE; 00131 STDMETHOD_(NTSTATUS, AttemptBypass)(THIS) PURE; 00132 STDMETHOD_(NTSTATUS, AttemptUnbypass)(THIS) PURE; 00133 00134 STDMETHOD_(VOID, GenerateConnectionEvents)(THIS_ 00135 IN ULONG EventMask) PURE; 00136 00137 STDMETHOD_(NTSTATUS, ClientSetDeviceState)(THIS_ 00138 IN KSSTATE StateIn, 00139 IN KSSTATE StateOut) PURE; 00140 }; 00141 00142 /***************************************************************************** 00143 * IKsQueue 00144 ***************************************************************************** 00145 */ 00146 00147 #undef INTERFACE 00148 #define INTERFACE IKsQueue 00149 00150 DECLARE_INTERFACE_(IKsQueue, IUnknown) 00151 { 00152 DEFINE_ABSTRACT_UNKNOWN() 00153 00154 }; 00155 00156 /***************************************************************************** 00157 * IKsFilterFactory 00158 ***************************************************************************** 00159 */ 00160 00161 #undef INTERFACE 00162 #define INTERFACE IKsFilter 00163 00164 struct KSPROCESSPIPESECTION; 00165 00166 00167 DECLARE_INTERFACE_(IKsFilter, IUnknown) 00168 { 00169 DEFINE_ABSTRACT_UNKNOWN() 00170 00171 STDMETHOD_(PKSFILTER, GetStruct)(THIS) PURE; 00172 00173 STDMETHOD_(BOOL, DoAllNecessaryPinsExist)(THIS) PURE; 00174 00175 STDMETHOD_(NTSTATUS, CreateNode)(THIS_ 00176 IN PIRP Irp, 00177 IN IKsPin * Pin, 00178 IN PLIST_ENTRY ListEntry) PURE; 00179 00180 STDMETHOD_(NTSTATUS, BindProcessPinsToPipeSection)(THIS_ 00181 IN struct KSPROCESSPIPESECTION *Section, 00182 IN PVOID Create, 00183 IN PKSPIN KsPin, 00184 OUT IKsPin **Pin, 00185 OUT PKSGATE *OutGate) PURE; 00186 00187 STDMETHOD_(NTSTATUS, UnbindProcessPinsFromPipeSection)(THIS_ 00188 IN struct KSPROCESSPIPESECTION *Section) PURE; 00189 00190 STDMETHOD_(NTSTATUS, AddProcessPin)(THIS_ 00191 IN PKSPROCESSPIN ProcessPin) PURE; 00192 00193 STDMETHOD_(NTSTATUS, RemoveProcessPin)(THIS_ 00194 IN PKSPROCESSPIN ProcessPin) PURE; 00195 00196 STDMETHOD_(BOOL, ReprepareProcessPipeSection)(THIS_ 00197 IN struct KSPROCESSPIPESECTION *PipeSection, 00198 IN PULONG Data) PURE; 00199 00200 STDMETHOD_(VOID, DeliverResetState)(THIS_ 00201 IN struct KSPROCESSPIPESECTION *PipeSection, 00202 IN KSRESET ResetState) PURE; 00203 00204 STDMETHOD_(BOOL, IsFrameHolding)(THIS); 00205 00206 STDMETHOD_(VOID, RegisterForCopyCallbacks)(THIS_ 00207 IKsQueue * Queue, 00208 IN BOOL Enable) PURE; 00209 00210 STDMETHOD_(PKSPROCESSPIN_INDEXENTRY, GetProcessDispatch)(THIS); 00211 }; 00212 00213 /***************************************************************************** 00214 * IKsFilterFactory 00215 ***************************************************************************** 00216 */ 00217 00218 #undef INTERFACE 00219 #define INTERFACE IKsFilterFactory 00220 00221 DECLARE_INTERFACE_(IKsFilterFactory, IUnknown) 00222 { 00223 DEFINE_ABSTRACT_UNKNOWN() 00224 00225 STDMETHOD_(KSFILTERFACTORY*, GetStruct)(THIS) PURE; 00226 00227 STDMETHOD_(NTSTATUS, SetDeviceClassesState)(THIS_ 00228 IN BOOLEAN Enable)PURE; 00229 00230 STDMETHOD_(NTSTATUS, Initialize)(THIS_ 00231 IN PDEVICE_OBJECT DeviceObject, 00232 IN const KSFILTER_DESCRIPTOR *Descriptor, 00233 IN PWSTR RefString OPTIONAL, 00234 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, 00235 IN ULONG CreateItemFlags, 00236 IN PFNKSFILTERFACTORYPOWER SleepCallback OPTIONAL, 00237 IN PFNKSFILTERFACTORYPOWER WakeCallback OPTIONAL, 00238 OUT PKSFILTERFACTORY *FilterFactory OPTIONAL)PURE; 00239 }; 00240 00241 00242 /***************************************************************************** 00243 * IKsPowerNotify 00244 ***************************************************************************** 00245 */ 00246 00247 #undef INTERFACE 00248 #define INTERFACE IKsPowerNotify 00249 00250 DECLARE_INTERFACE_(IKsPowerNotify, IUnknown) 00251 { 00252 DEFINE_ABSTRACT_UNKNOWN() 00253 00254 STDMETHOD_(VOID,Sleep)(THIS_ 00255 IN DEVICE_POWER_STATE State) PURE; 00256 00257 STDMETHOD_(VOID,Wake)(THIS) PURE; 00258 }; 00259 00260 00261 /***************************************************************************** 00262 * IKsDevice 00263 ***************************************************************************** 00264 */ 00265 00266 #undef INTERFACE 00267 #define INTERFACE IKsDevice 00268 00269 struct KSPOWER_ENTRY; 00270 00271 DECLARE_INTERFACE_(IKsDevice, IUnknown) 00272 { 00273 DEFINE_ABSTRACT_UNKNOWN() 00274 00275 STDMETHOD_(KSDEVICE*,GetStruct)(THIS) PURE; 00276 00277 STDMETHOD_(NTSTATUS, InitializeObjectBag)(THIS_ 00278 IN PKSIOBJECT_BAG Bag, 00279 IN PRKMUTEX Mutex) PURE; 00280 00281 STDMETHOD_(NTSTATUS,AcquireDevice)(THIS) PURE; 00282 STDMETHOD_(NTSTATUS,ReleaseDevice)(THIS) PURE; 00283 00284 STDMETHOD_(NTSTATUS, GetAdapterObject)(THIS_ 00285 IN PADAPTER_OBJECT * Object, 00286 IN PULONG MaxMappingsByteCount, 00287 IN PULONG MappingTableStride) PURE; 00288 00289 STDMETHOD_(NTSTATUS, AddPowerEntry)(THIS_ 00290 IN struct KSPOWER_ENTRY * Entry, 00291 IN IKsPowerNotify* Notify)PURE; 00292 00293 STDMETHOD_(NTSTATUS, RemovePowerEntry)(THIS_ 00294 IN struct KSPOWER_ENTRY * Entry)PURE; 00295 00296 STDMETHOD_(NTSTATUS, PinStateChange)(THIS_ 00297 IN KSPIN Pin, 00298 IN PIRP Irp, 00299 IN KSSTATE OldState, 00300 IN KSSTATE NewState)PURE; 00301 00302 STDMETHOD_(NTSTATUS, ArbitrateAdapterChannel)(THIS_ 00303 IN ULONG NumberOfMapRegisters, 00304 IN PDRIVER_CONTROL ExecutionRoutine, 00305 IN PVOID Context)PURE; 00306 00307 STDMETHOD_(NTSTATUS, CheckIoCapability)(THIS_ 00308 IN ULONG Unknown)PURE; 00309 }; 00310 00311 #undef INTERFACE 00312 00313 00314 /***************************************************************************** 00315 * IKsProcessingObject 00316 ***************************************************************************** 00317 */ 00318 00319 #undef INTERFACE 00320 #define INTERFACE IKsProcessingObject 00321 00322 DECLARE_INTERFACE_(IKsProcessingObject, IUnknown) 00323 { 00324 DEFINE_ABSTRACT_UNKNOWN() 00325 00326 STDMETHOD_(VOID, ProcessingObjectWork)(THIS) PURE; 00327 00328 STDMETHOD_(PKSGATE, GetAndGate)(THIS) PURE; 00329 00330 STDMETHOD_(VOID, Process)(THIS_ 00331 IN BOOLEAN Asynchronous)PURE; 00332 00333 STDMETHOD_(VOID, Reset)(THIS) PURE; 00334 00335 STDMETHOD_(VOID, TriggerNotification)(THIS) PURE; 00336 00337 }; 00338 00339 #undef INTERFACE 00340 Generated on Sun May 27 2012 04:27:52 for ReactOS by
1.7.6.1
|