ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

private.hpp
Go to the documentation of this file.
00001 /*
00002     PortCls FDO Extension
00003 
00004     by Andrew Greenwood
00005 */
00006 
00007 #ifndef PORTCLS_PRIVATE_H
00008 #define PORTCLS_PRIVATE_H
00009 
00010 //#define _KS_NO_ANONYMOUS_STRUCTURES_
00011 #define PC_IMPLEMENTATION
00012 #define COM_STDMETHOD_CAN_THROW
00013 #define PC_NO_IMPORTS
00014 
00015 #include <ntddk.h>
00016 #include <portcls.h>
00017 
00018 #ifndef YDEBUG
00019 #define NDEBUG
00020 #endif
00021 
00022 #include <debug.h>
00023 
00024 #include <dmusicks.h>
00025 #include <kcom.h>
00026 #include "interfaces.hpp"
00027 #include <ks.h>
00028 #include <ksmedia.h>
00029 #include <stdio.h>
00030 
00031 //#include <intrin.h>
00032 
00033 #define TAG_PORTCLASS 'SLCP'
00034 
00035 #define PC_ASSERT(exp) \
00036   (VOID)((!(exp)) ? \
00037     RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
00038 
00039 #define PC_ASSERT_IRQL(x) PC_ASSERT(KeGetCurrentIrql() <= (x))
00040 #define PC_ASSERT_IRQL_EQUAL(x) PC_ASSERT(KeGetCurrentIrql()==(x))
00041 
00042 extern
00043 "C"
00044 NTSTATUS
00045 NTAPI
00046 PortClsCreate(
00047     IN  PDEVICE_OBJECT DeviceObject,
00048     IN  PIRP Irp);
00049 
00050 extern
00051 "C"
00052 NTSTATUS
00053 NTAPI
00054 PortClsPnp(
00055     IN  PDEVICE_OBJECT DeviceObject,
00056     IN  PIRP Irp);
00057 
00058 extern
00059 "C"
00060 NTSTATUS
00061 NTAPI
00062 PortClsPower(
00063     IN  PDEVICE_OBJECT DeviceObject,
00064     IN  PIRP Irp);
00065 
00066 extern
00067 "C"
00068 NTSTATUS
00069 NTAPI
00070 PortClsSysControl(
00071     IN  PDEVICE_OBJECT DeviceObject,
00072     IN  PIRP Irp);
00073 
00074 NTSTATUS
00075 NewMiniportDMusUART(
00076     OUT PMINIPORT* OutMiniport,
00077     IN  REFCLSID ClassId);
00078 
00079 NTSTATUS
00080 NewMiniportFmSynth(
00081     OUT PMINIPORT* OutMiniport,
00082     IN  REFCLSID ClassId);
00083 
00084 NTSTATUS
00085 NewPortDMus(
00086     OUT PPORT* OutPort);
00087 
00088 NTSTATUS
00089 NewPortTopology(
00090     OUT PPORT* OutPort);
00091 
00092 NTSTATUS
00093 NewPortWaveCyclic(
00094     OUT PPORT* OutPort);
00095 
00096 NTSTATUS
00097 NewPortWavePci(
00098     OUT PPORT* OutPort);
00099 
00100 NTSTATUS
00101 NewIDrmPort(
00102     OUT PDRMPORT2 *OutPort);
00103 
00104 NTSTATUS
00105 NewPortClsVersion(
00106     OUT PPORTCLSVERSION * OutVersion);
00107 
00108 NTSTATUS
00109 NewPortFilterWaveCyclic(
00110     OUT IPortFilterWaveCyclic ** OutFilter);
00111 
00112 NTSTATUS
00113 NewPortPinWaveCyclic(
00114     OUT IPortPinWaveCyclic ** OutPin);
00115 
00116 NTSTATUS 
00117 NewPortFilterWavePci(
00118     OUT IPortFilterWavePci ** OutFilter);
00119 
00120 NTSTATUS
00121 NewPortPinWavePci(
00122     OUT IPortPinWavePci ** OutPin);
00123 
00124 PDEVICE_OBJECT
00125 GetDeviceObjectFromWaveCyclic(
00126     IPortWavePci* iface);
00127 
00128 PDEVICE_OBJECT
00129 GetDeviceObjectFromPortWavePci(
00130     IPortWavePci* iface);
00131 
00132 PMINIPORTWAVEPCI
00133 GetWavePciMiniport(
00134     PPORTWAVEPCI Port);
00135 
00136 
00137 NTSTATUS 
00138 NewPortFilterDMus(
00139     OUT PPORTFILTERDMUS * OutFilter);
00140 
00141 
00142 NTSTATUS
00143 NewPortPinDMus(
00144     OUT PPORTPINDMUS * OutPin);
00145 
00146 VOID
00147 GetDMusMiniport(
00148     IN IPortDMus * iface, 
00149     IN PMINIPORTDMUS * Miniport,
00150     IN PMINIPORTMIDI * MidiMiniport);
00151 
00152 #if (NTDDI_VERSION >= NTDDI_VISTA)
00153 
00154 NTSTATUS 
00155 NewPortFilterWaveRT(
00156     OUT IPortFilterWaveRT ** OutFilter);
00157 
00158 NTSTATUS
00159 NewPortPinWaveRT(
00160     OUT IPortPinWaveRT ** OutPin);
00161 
00162 PMINIPORTWAVERT
00163 GetWaveRTMiniport(
00164     IN IPortWaveRT* iface);
00165 
00166 PDEVICE_OBJECT
00167 GetDeviceObjectFromPortWaveRT(
00168     IPortWaveRT* iface);
00169 
00170 
00171 NTSTATUS
00172 NewPortWaveRTStream(
00173     PPORTWAVERTSTREAM *OutStream);
00174 
00175 NTSTATUS
00176 NewPortWaveRT(
00177     OUT PPORT* OutPort);
00178 
00179 
00180 #endif
00181 
00182 NTSTATUS 
00183 NewPortFilterTopology(
00184     OUT IPortFilterTopology ** OutFilter);
00185 
00186 PMINIPORTTOPOLOGY
00187 GetTopologyMiniport(
00188     PPORTTOPOLOGY Port);
00189 
00190 NTSTATUS
00191 NTAPI
00192 NewDispatchObject(
00193     IN PIRP Irp,
00194     IN IIrpTarget * Target,
00195     IN ULONG ObjectCreateItemCount,
00196     IN PKSOBJECT_CREATE_ITEM ObjectCreateItem);
00197 
00198 PMINIPORTWAVECYCLIC
00199 GetWaveCyclicMiniport(
00200     IN IPortWaveCyclic* iface);
00201 
00202 PVOID
00203 AllocateItem(
00204     IN POOL_TYPE PoolType,
00205     IN SIZE_T NumberOfBytes,
00206     IN ULONG Tag);
00207 
00208 VOID
00209 FreeItem(
00210     IN PVOID Item,
00211     IN ULONG Tag);
00212 
00213 NTSTATUS
00214 NTAPI
00215 NewIrpQueue(
00216     IN IIrpQueue **Queue);
00217 
00218 NTSTATUS
00219 NTAPI
00220 TopologyPropertyHandler(
00221     IN PIRP Irp,
00222     IN PKSIDENTIFIER  Request,
00223     IN OUT PVOID  Data);
00224 
00225 NTSTATUS
00226 NTAPI
00227 PinPropertyHandler(
00228     IN PIRP Irp,
00229     IN PKSIDENTIFIER  Request,
00230     IN OUT PVOID  Data);
00231 
00232 extern
00233 "C"
00234 NTSTATUS
00235 NTAPI
00236 PcDmaMasterDescription(
00237     IN PRESOURCELIST ResourceList OPTIONAL,
00238     IN BOOLEAN ScatterGather,
00239     IN BOOLEAN Dma32BitAddresses,
00240     IN BOOLEAN IgnoreCount,
00241     IN BOOLEAN Dma64BitAddresses,
00242     IN DMA_WIDTH DmaWidth,
00243     IN DMA_SPEED DmaSpeed,
00244     IN ULONG MaximumLength,
00245     IN ULONG DmaPort,
00246     OUT PDEVICE_DESCRIPTION DeviceDescription);
00247 
00248 extern
00249 "C"
00250 NTSTATUS
00251 NTAPI
00252 PcDmaSlaveDescription(
00253     IN PRESOURCELIST  ResourceList OPTIONAL,
00254     IN ULONG DmaIndex,
00255     IN BOOLEAN DemandMode,
00256     IN BOOLEAN AutoInitialize,
00257     IN DMA_SPEED DmaSpeed,
00258     IN ULONG MaximumLength,
00259     IN ULONG DmaPort,
00260     OUT PDEVICE_DESCRIPTION DeviceDescription);
00261 
00262 extern
00263 "C"
00264 NTSTATUS
00265 NTAPI
00266 PcCreateSubdeviceDescriptor(
00267     OUT SUBDEVICE_DESCRIPTOR ** OutSubdeviceDescriptor,
00268     IN ULONG InterfaceCount,
00269     IN GUID * InterfaceGuids,
00270     IN ULONG IdentifierCount,
00271     IN KSIDENTIFIER *Identifier,
00272     IN ULONG FilterPropertiesCount,
00273     IN KSPROPERTY_SET * FilterProperties,
00274     IN ULONG Unknown1,
00275     IN ULONG Unknown2,
00276     IN ULONG PinPropertiesCount,
00277     IN KSPROPERTY_SET * PinProperties,
00278     IN ULONG EventSetCount,
00279     IN KSEVENT_SET * EventSet,
00280     IN PPCFILTER_DESCRIPTOR FilterDescription);
00281 
00282 extern
00283 "C"
00284 NTSTATUS
00285 NTAPI
00286 PcValidateConnectRequest(
00287     IN PIRP Irp,
00288     IN KSPIN_FACTORY * Descriptor,
00289     OUT PKSPIN_CONNECT* Connect);
00290 
00291 NTSTATUS
00292 NTAPI
00293 PcCreateItemDispatch(
00294     IN  PDEVICE_OBJECT DeviceObject,
00295     IN  PIRP Irp);
00296 
00297 PDEVICE_OBJECT
00298 GetDeviceObject(
00299     IPortWaveCyclic* iface);
00300 
00301 VOID
00302 NTAPI
00303 PcIoTimerRoutine(
00304     IN PDEVICE_OBJECT  DeviceObject,
00305     IN PVOID  Context);
00306 
00307 NTSTATUS
00308 NTAPI
00309 NewIUnregisterSubdevice(
00310     OUT PUNREGISTERSUBDEVICE *OutDevice);
00311 
00312 NTSTATUS
00313 NTAPI
00314 NewIUnregisterPhysicalConnection(
00315     OUT PUNREGISTERPHYSICALCONNECTION *OutConnection);
00316 
00317 NTSTATUS
00318 NTAPI
00319 PcHandlePropertyWithTable(
00320     IN PIRP Irp,
00321     IN ULONG PropertySetCount,
00322     IN PKSPROPERTY_SET PropertySet,
00323     IN PSUBDEVICE_DESCRIPTOR Descriptor);
00324 
00325 NTSTATUS
00326 NTAPI
00327 PcHandleEnableEventWithTable(
00328     IN PIRP Irp,
00329     IN PSUBDEVICE_DESCRIPTOR Descriptor);
00330 
00331 NTSTATUS
00332 NTAPI
00333 PcHandleDisableEventWithTable(
00334     IN PIRP Irp,
00335     IN PSUBDEVICE_DESCRIPTOR Descriptor);
00336 
00337 IIrpTarget *
00338 NTAPI
00339 KsoGetIrpTargetFromIrp(
00340     PIRP Irp);
00341 
00342 #define DEFINE_KSPROPERTY_CONNECTIONSET(PinSet,\
00343     PropStateHandler, PropDataFormatHandler, PropAllocatorFraming)\
00344 DEFINE_KSPROPERTY_TABLE(PinSet) {\
00345     DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(PropStateHandler, PropStateHandler),\
00346     DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(PropDataFormatHandler, PropDataFormatHandler),\
00347     DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(PropAllocatorFraming)\
00348 }
00349 
00350 #define DEFINE_KSPROPERTY_ITEM_AUDIO_POSITION(GetHandler, SetHandler)\
00351     DEFINE_KSPROPERTY_ITEM(\
00352         KSPROPERTY_AUDIO_POSITION,\
00353         (GetHandler),\
00354         sizeof(KSPROPERTY),\
00355         sizeof(KSAUDIO_POSITION),\
00356         (SetHandler),\
00357         NULL, 0, NULL, NULL, 0)
00358 
00359 #define DEFINE_KSPROPERTY_AUDIOSET(PinSet,\
00360     PropPositionHandler)\
00361 DEFINE_KSPROPERTY_TABLE(PinSet) {\
00362     DEFINE_KSPROPERTY_ITEM_AUDIO_POSITION(PropPositionHandler, PropPositionHandler)\
00363 }
00364 
00365 
00366 #define DEFINE_KSPROPERTY_ITEM_DRMAUDIOSTREAM_CONTENTID(SetHandler)\
00367     DEFINE_KSPROPERTY_ITEM(\
00368         KSPROPERTY_DRMAUDIOSTREAM_CONTENTID,\
00369         NULL,\
00370         sizeof(KSPROPERTY),\
00371         sizeof(ULONG),\
00372         (SetHandler),\
00373         NULL, 0, NULL, NULL, 0)
00374 
00375 #define DEFINE_KSPROPERTY_DRMSET(PinSet,\
00376     PropPositionHandler)\
00377 DEFINE_KSPROPERTY_TABLE(PinSet) {\
00378     DEFINE_KSPROPERTY_ITEM_DRMAUDIOSTREAM_CONTENTID(PropPositionHandler)\
00379 }
00380 
00381 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
00382     PropGeneral, PropInstances, PropIntersection)\
00383 DEFINE_KSPROPERTY_TABLE(PinSet) {\
00384     DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
00385     DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
00386     DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
00387     DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
00388     DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
00389     DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
00390     DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
00391     DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
00392     DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(PropGeneral),\
00393     DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(PropGeneral),\
00394     DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(PropGeneral),\
00395     DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
00396     DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
00397     DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\
00398     DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\
00399 }
00400 
00401 typedef struct
00402 {
00403     KSDEVICE_HEADER KsDeviceHeader;
00404     PDEVICE_OBJECT PhysicalDeviceObject;
00405     PDEVICE_OBJECT PrevDeviceObject;
00406     PCPFNSTARTDEVICE StartDevice;
00407     ULONG_PTR Unused[4];
00408     IAdapterPowerManagement * AdapterPowerManagement;
00409     ULONG MaxSubDevices;
00410     KSOBJECT_CREATE_ITEM * CreateItems;
00411 
00412     IResourceList* resources;
00413 
00414     LIST_ENTRY TimerList;
00415     KSPIN_LOCK TimerListLock;
00416 
00417     DEVICE_POWER_STATE DevicePowerState;
00418     SYSTEM_POWER_STATE  SystemPowerState;
00419 
00420 } PCLASS_DEVICE_EXTENSION, *PPCLASS_DEVICE_EXTENSION;
00421 
00422 
00423 typedef struct
00424 {
00425     PVOID Pin;
00426     PIO_WORKITEM WorkItem;
00427     PIRP Irp;
00428 }CLOSESTREAM_CONTEXT, *PCLOSESTREAM_CONTEXT;
00429 
00430 typedef struct
00431 {
00432     LIST_ENTRY Entry;
00433     PIO_TIMER_ROUTINE pTimerRoutine;
00434     PVOID Context;
00435 }TIMER_CONTEXT, *PTIMER_CONTEXT;
00436 
00437 typedef struct
00438 {
00439     KSOBJECT_HEADER ObjectHeader;
00440     IIrpTarget * Target;
00441     PKSOBJECT_CREATE_ITEM CreateItem;
00442 }DISPATCH_CONTEXT, *PDISPATCH_CONTEXT;
00443 
00444 #endif

Generated on Sun May 27 2012 04:28:37 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.