Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygeninterfaces.hpp
Go to the documentation of this file.
00001 #ifndef INTERFACES_H__ 00002 #define INTERFACES_H__ 00003 00004 DEFINE_GUID(IID_IIrpTarget, 0xB4C90A60, 0x5791, 0x11D0, 0xF9, 0x86, 0x00, 0xA0, 0xC9, 0x11, 0xB5, 0x44); 00005 DEFINE_GUID(IID_ISubdevice, 0xB4C90A61, 0x5791, 0x11D0, 0xF9, 0x86, 0x00, 0xA0, 0xC9, 0x11, 0xB5, 0x44); 00006 DEFINE_GUID(IID_IIrpTargetFactory, 0xB4C90A62, 0x5791, 0x11D0, 0xF9, 0x86, 0x00, 0xA0, 0xC9, 0x11, 0xB5, 0x44); 00007 00008 00009 /***************************************************************************** 00010 * IIrpTarget 00011 ***************************************************************************** 00012 */ 00013 00014 #define IMP_IIrpTarget \ 00015 STDMETHODIMP_(NTSTATUS) NewIrpTarget(THIS_ \ 00016 OUT struct IIrpTarget **OutTarget, \ 00017 IN PCWSTR Name, \ 00018 IN PUNKNOWN Unknown, \ 00019 IN POOL_TYPE PoolType, \ 00020 IN PDEVICE_OBJECT DeviceObject, \ 00021 IN PIRP Irp, \ 00022 IN KSOBJECT_CREATE *CreateObject); \ 00023 \ 00024 STDMETHODIMP_(NTSTATUS) DeviceIoControl(THIS_ \ 00025 IN PDEVICE_OBJECT DeviceObject, \ 00026 IN PIRP Irp); \ 00027 \ 00028 STDMETHODIMP_(NTSTATUS) Read(THIS_ \ 00029 IN PDEVICE_OBJECT DeviceObject, \ 00030 IN PIRP Irp); \ 00031 \ 00032 STDMETHODIMP_(NTSTATUS) Write(THIS_ \ 00033 IN PDEVICE_OBJECT DeviceObject, \ 00034 IN PIRP Irp); \ 00035 \ 00036 STDMETHODIMP_(NTSTATUS) Flush(THIS_ \ 00037 IN PDEVICE_OBJECT DeviceObject, \ 00038 IN PIRP Irp); \ 00039 \ 00040 STDMETHODIMP_(NTSTATUS) Close(THIS_ \ 00041 IN PDEVICE_OBJECT DeviceObject, \ 00042 IN PIRP Irp); \ 00043 \ 00044 STDMETHODIMP_(NTSTATUS) QuerySecurity(THIS_ \ 00045 IN PDEVICE_OBJECT DeviceObject, \ 00046 IN PIRP Irp); \ 00047 \ 00048 STDMETHODIMP_(NTSTATUS) SetSecurity(THIS_ \ 00049 IN PDEVICE_OBJECT DeviceObject, \ 00050 IN PIRP Irp); \ 00051 \ 00052 STDMETHODIMP_(BOOLEAN) FastDeviceIoControl(THIS_ \ 00053 IN PFILE_OBJECT FileObject, \ 00054 IN BOOLEAN Wait, \ 00055 IN PVOID InputBuffer, \ 00056 IN ULONG InputBufferLength, \ 00057 OUT PVOID OutputBuffer, \ 00058 IN ULONG OutputBufferLength, \ 00059 IN ULONG IoControlCode, \ 00060 OUT PIO_STATUS_BLOCK StatusBlock, \ 00061 IN PDEVICE_OBJECT DeviceObject); \ 00062 \ 00063 STDMETHODIMP_(BOOLEAN) FastRead(THIS_ \ 00064 IN PFILE_OBJECT FileObject, \ 00065 IN PLARGE_INTEGER FileOffset, \ 00066 IN ULONG Length, \ 00067 IN BOOLEAN Wait, \ 00068 IN ULONG LockKey, \ 00069 IN PVOID Buffer, \ 00070 OUT PIO_STATUS_BLOCK StatusBlock, \ 00071 IN PDEVICE_OBJECT DeviceObject); \ 00072 \ 00073 STDMETHODIMP_(BOOLEAN) FastWrite(THIS_ \ 00074 IN PFILE_OBJECT FileObject, \ 00075 IN PLARGE_INTEGER FileOffset, \ 00076 IN ULONG Length, \ 00077 IN BOOLEAN Wait, \ 00078 IN ULONG LockKey, \ 00079 IN PVOID Buffer, \ 00080 OUT PIO_STATUS_BLOCK StatusBlock, \ 00081 IN PDEVICE_OBJECT DeviceObject) 00082 00083 #define DEFINE_ABSTRACT_IRPTARGET() \ 00084 STDMETHOD_(NTSTATUS, NewIrpTarget)(THIS_ \ 00085 OUT struct IIrpTarget **OutTarget, \ 00086 IN PCWSTR Name, \ 00087 IN PUNKNOWN Unknown, \ 00088 IN POOL_TYPE PoolType, \ 00089 IN PDEVICE_OBJECT DeviceObject, \ 00090 IN PIRP Irp, \ 00091 IN KSOBJECT_CREATE *CreateObject) PURE; \ 00092 \ 00093 STDMETHOD_(NTSTATUS, DeviceIoControl)(THIS_ \ 00094 IN PDEVICE_OBJECT DeviceObject, \ 00095 IN PIRP Irp)PURE; \ 00096 \ 00097 STDMETHOD_(NTSTATUS, Read)(THIS_ \ 00098 IN PDEVICE_OBJECT DeviceObject, \ 00099 IN PIRP Irp)PURE; \ 00100 \ 00101 STDMETHOD_(NTSTATUS, Write)(THIS_ \ 00102 IN PDEVICE_OBJECT DeviceObject, \ 00103 IN PIRP Irp)PURE; \ 00104 \ 00105 STDMETHOD_(NTSTATUS, Flush)(THIS_ \ 00106 IN PDEVICE_OBJECT DeviceObject, \ 00107 IN PIRP Irp)PURE; \ 00108 \ 00109 STDMETHOD_(NTSTATUS, Close)( \ 00110 IN PDEVICE_OBJECT DeviceObject, \ 00111 IN PIRP Irp)PURE; \ 00112 \ 00113 STDMETHOD_(NTSTATUS, QuerySecurity)(THIS_ \ 00114 IN PDEVICE_OBJECT DeviceObject, \ 00115 IN PIRP Irp)PURE; \ 00116 \ 00117 STDMETHOD_(NTSTATUS, SetSecurity)(THIS_ \ 00118 IN PDEVICE_OBJECT DeviceObject, \ 00119 IN PIRP Irp)PURE; \ 00120 \ 00121 STDMETHOD_(BOOLEAN, FastDeviceIoControl)(THIS_ \ 00122 IN PFILE_OBJECT FileObject, \ 00123 IN BOOLEAN Wait, \ 00124 IN PVOID InputBuffer, \ 00125 IN ULONG InputBufferLength, \ 00126 OUT PVOID OutputBuffer, \ 00127 IN ULONG OutputBufferLength, \ 00128 IN ULONG IoControlCode, \ 00129 OUT PIO_STATUS_BLOCK StatusBlock, \ 00130 IN PDEVICE_OBJECT DeviceObject)PURE; \ 00131 \ 00132 STDMETHOD_(BOOLEAN, FastRead)(THIS_ \ 00133 IN PFILE_OBJECT FileObject, \ 00134 IN PLARGE_INTEGER FileOffset, \ 00135 IN ULONG Length, \ 00136 IN BOOLEAN Wait, \ 00137 IN ULONG LockKey, \ 00138 IN PVOID Buffer, \ 00139 OUT PIO_STATUS_BLOCK StatusBlock, \ 00140 IN PDEVICE_OBJECT DeviceObject)PURE; \ 00141 \ 00142 STDMETHOD_(BOOLEAN, FastWrite)(THIS_ \ 00143 IN PFILE_OBJECT FileObject, \ 00144 IN PLARGE_INTEGER FileOffset, \ 00145 IN ULONG Length, \ 00146 IN BOOLEAN Wait, \ 00147 IN ULONG LockKey, \ 00148 IN PVOID Buffer, \ 00149 OUT PIO_STATUS_BLOCK StatusBlock, \ 00150 IN PDEVICE_OBJECT DeviceObject)PURE; 00151 00152 00153 00154 #undef INTERFACE 00155 #define INTERFACE IIrpTarget 00156 00157 DECLARE_INTERFACE_(IIrpTarget, IUnknown) 00158 { 00159 DEFINE_ABSTRACT_UNKNOWN() 00160 00161 DEFINE_ABSTRACT_IRPTARGET() 00162 }; 00163 00164 typedef IIrpTarget *PIRPTARGET; 00165 00166 /***************************************************************************** 00167 * ISubdevice 00168 ***************************************************************************** 00169 */ 00170 00171 struct IIrpTargetFactory; 00172 00173 typedef struct 00174 { 00175 LIST_ENTRY Entry; 00176 UNICODE_STRING SymbolicLink; 00177 }SYMBOLICLINK_ENTRY, *PSYMBOLICLINK_ENTRY; 00178 00179 typedef struct 00180 { 00181 LIST_ENTRY Entry; 00182 ULONG FromPin; 00183 KSPIN_PHYSICALCONNECTION Connection; 00184 }PHYSICAL_CONNECTION_ENTRY, *PPHYSICAL_CONNECTION_ENTRY; 00185 00186 typedef struct 00187 { 00188 ULONG MaxGlobalInstanceCount; 00189 ULONG MaxFilterInstanceCount; 00190 ULONG MinFilterInstanceCount; 00191 ULONG CurrentPinInstanceCount; 00192 00193 }PIN_INSTANCE_INFO, *PPIN_INSTANCE_INFO; 00194 00195 00196 typedef struct 00197 { 00198 ULONG PinDescriptorCount; 00199 ULONG PinDescriptorSize; 00200 KSPIN_DESCRIPTOR * KsPinDescriptor; 00201 PIN_INSTANCE_INFO * Instances; 00202 }KSPIN_FACTORY; 00203 00204 typedef struct 00205 { 00206 ULONG InterfaceCount; 00207 GUID *Interfaces; 00208 KSPIN_FACTORY Factory; 00209 ULONG FilterPropertySetCount; 00210 PKSPROPERTY_SET FilterPropertySet; 00211 00212 ULONG EventSetCount; 00213 PKSEVENT_SET EventSet; 00214 PLIST_ENTRY EventList; 00215 PKSPIN_LOCK EventListLock; 00216 00217 PPCFILTER_DESCRIPTOR DeviceDescriptor; 00218 KSTOPOLOGY* Topology; 00219 LIST_ENTRY SymbolicLinkList; 00220 LIST_ENTRY PhysicalConnectionList; 00221 UNICODE_STRING RefString; 00222 PUNKNOWN UnknownMiniport; 00223 PUNKNOWN UnknownStream; 00224 PVOID PortPin; 00225 }SUBDEVICE_DESCRIPTOR, *PSUBDEVICE_DESCRIPTOR; 00226 00227 #undef INTERFACE 00228 #define INTERFACE ISubdevice 00229 00230 #define DEFINE_ABSTRACT_ISUBDEVICE() \ 00231 STDMETHOD_(NTSTATUS, NewIrpTarget)(THIS_ \ 00232 OUT IIrpTarget **OutTarget, \ 00233 IN PCWSTR Name, \ 00234 IN PUNKNOWN Unknown, \ 00235 IN POOL_TYPE PoolType, \ 00236 IN PDEVICE_OBJECT DeviceObject, \ 00237 IN PIRP Irp, \ 00238 IN KSOBJECT_CREATE *CreateObject) PURE; \ 00239 \ 00240 STDMETHOD_(NTSTATUS, ReleaseChildren)(THIS) PURE; \ 00241 \ 00242 STDMETHOD_(NTSTATUS, GetDescriptor)(THIS_ \ 00243 IN SUBDEVICE_DESCRIPTOR **) PURE; \ 00244 \ 00245 STDMETHOD_(NTSTATUS, DataRangeIntersection)(THIS_ \ 00246 IN ULONG PinId, \ 00247 IN PKSDATARANGE DataRange, \ 00248 IN PKSDATARANGE MatchingDataRange, \ 00249 IN ULONG OutputBufferLength, \ 00250 OUT PVOID ResultantFormat OPTIONAL, \ 00251 OUT PULONG ResultantFormatLength) PURE; \ 00252 \ 00253 STDMETHOD_(NTSTATUS, PowerChangeNotify)(THIS_ \ 00254 IN POWER_STATE PowerState) PURE; \ 00255 \ 00256 STDMETHOD_(NTSTATUS, PinCount)(THIS_ \ 00257 IN ULONG PinId, \ 00258 IN OUT PULONG FilterNecessary, \ 00259 IN OUT PULONG FilterCurrent, \ 00260 IN OUT PULONG FilterPossible, \ 00261 IN OUT PULONG GlobalCurrent, \ 00262 IN OUT PULONG GlobalPossible)PURE; 00263 00264 00265 00266 #define IMP_ISubdevice \ 00267 STDMETHODIMP_(NTSTATUS) NewIrpTarget( \ 00268 OUT IIrpTarget **OutTarget, \ 00269 IN PCWSTR Name, \ 00270 IN PUNKNOWN Unknown, \ 00271 IN POOL_TYPE PoolType, \ 00272 IN PDEVICE_OBJECT DeviceObject, \ 00273 IN PIRP Irp, \ 00274 IN KSOBJECT_CREATE *CreateObject); \ 00275 \ 00276 STDMETHODIMP_(NTSTATUS) ReleaseChildren(THIS); \ 00277 \ 00278 STDMETHODIMP_(NTSTATUS) GetDescriptor(THIS_ \ 00279 IN SUBDEVICE_DESCRIPTOR **); \ 00280 \ 00281 STDMETHODIMP_(NTSTATUS) DataRangeIntersection( \ 00282 IN ULONG PinId, \ 00283 IN PKSDATARANGE DataRange, \ 00284 IN PKSDATARANGE MatchingDataRange, \ 00285 IN ULONG OutputBufferLength, \ 00286 OUT PVOID ResultantFormat OPTIONAL, \ 00287 OUT PULONG ResultantFormatLength); \ 00288 \ 00289 STDMETHODIMP_(NTSTATUS) PowerChangeNotify( \ 00290 IN POWER_STATE PowerState); \ 00291 \ 00292 STDMETHODIMP_(NTSTATUS) PinCount( \ 00293 IN ULONG PinId, \ 00294 IN OUT PULONG FilterNecessary, \ 00295 IN OUT PULONG FilterCurrent, \ 00296 IN OUT PULONG FilterPossible, \ 00297 IN OUT PULONG GlobalCurrent, \ 00298 IN OUT PULONG GlobalPossible) 00299 00300 00301 DECLARE_INTERFACE_(ISubdevice, IUnknown) 00302 { 00303 DEFINE_ABSTRACT_UNKNOWN() 00304 DEFINE_ABSTRACT_ISUBDEVICE() 00305 }; 00306 00307 typedef ISubdevice *PSUBDEVICE; 00308 00309 /***************************************************************************** 00310 * IIrpQueue 00311 ***************************************************************************** 00312 */ 00313 00314 #undef INTERFACE 00315 #define INTERFACE IIrpQueue 00316 00317 DECLARE_INTERFACE_(IIrpQueue, IUnknown) 00318 { 00319 DEFINE_ABSTRACT_UNKNOWN() 00320 00321 STDMETHOD_(NTSTATUS, Init)(THIS_ 00322 IN PKSPIN_CONNECT ConnectDetails, 00323 IN PKSPIN_DESCRIPTOR Descriptor, 00324 IN ULONG FrameSize, 00325 IN ULONG Alignment, 00326 IN ULONG TagSupportEnabled) PURE; 00327 00328 STDMETHOD_(NTSTATUS, AddMapping)(THIS_ 00329 IN PIRP Irp, 00330 OUT PULONG Data) PURE; 00331 00332 STDMETHOD_(NTSTATUS, GetMapping)(THIS_ 00333 OUT PUCHAR * Buffer, 00334 OUT PULONG BufferSize) PURE; 00335 00336 STDMETHOD_(VOID, UpdateMapping)(THIS_ 00337 IN ULONG BytesWritten) PURE; 00338 00339 STDMETHOD_(ULONG, NumData)(THIS) PURE; 00340 00341 STDMETHOD_(BOOL, CancelBuffers)(THIS) PURE; 00342 00343 STDMETHOD_(NTSTATUS, GetMappingWithTag)(THIS_ 00344 IN PVOID Tag, 00345 OUT PPHYSICAL_ADDRESS PhysicalAddress, 00346 OUT PVOID *VirtualAddress, 00347 OUT PULONG ByteCount, 00348 OUT PULONG Flags) PURE; 00349 00350 STDMETHOD_(NTSTATUS, ReleaseMappingWithTag)(THIS_ 00351 IN PVOID Tag) PURE; 00352 00353 STDMETHOD_(BOOLEAN, HasLastMappingFailed)(THIS) PURE; 00354 STDMETHOD_(ULONG, GetCurrentIrpOffset)(THIS) PURE; 00355 00356 STDMETHOD_(BOOLEAN, GetAcquiredTagRange)(THIS_ 00357 IN PVOID * FirstTag, 00358 IN PVOID * LastTag) PURE; 00359 00360 }; 00361 00362 00363 #define IMP_IIrpQueue \ 00364 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00365 IN PKSPIN_CONNECT ConnectDetails, \ 00366 IN PKSPIN_DESCRIPTOR Descriptor, \ 00367 IN ULONG FrameSize, \ 00368 IN ULONG Alignment, \ 00369 IN ULONG TagSupportEnabled); \ 00370 \ 00371 STDMETHODIMP_(NTSTATUS) AddMapping(THIS_ \ 00372 IN PIRP Irp, \ 00373 OUT PULONG Data); \ 00374 \ 00375 STDMETHODIMP_(NTSTATUS) GetMapping(THIS_ \ 00376 OUT PUCHAR * Buffer, \ 00377 OUT PULONG BufferSize); \ 00378 \ 00379 STDMETHODIMP_(VOID) UpdateMapping(THIS_ \ 00380 IN ULONG BytesWritten); \ 00381 \ 00382 STDMETHODIMP_(ULONG) NumData(THIS); \ 00383 \ 00384 STDMETHODIMP_(BOOL) CancelBuffers(THIS); \ 00385 \ 00386 STDMETHODIMP_(NTSTATUS) GetMappingWithTag(THIS_ \ 00387 IN PVOID Tag, \ 00388 OUT PPHYSICAL_ADDRESS PhysicalAddress, \ 00389 OUT PVOID *VirtualAddress, \ 00390 OUT PULONG ByteCount, \ 00391 OUT PULONG Flags); \ 00392 \ 00393 STDMETHODIMP_(NTSTATUS) ReleaseMappingWithTag( \ 00394 IN PVOID Tag); \ 00395 \ 00396 STDMETHODIMP_(BOOLEAN) HasLastMappingFailed(THIS); \ 00397 STDMETHODIMP_(ULONG) GetCurrentIrpOffset(THIS); \ 00398 STDMETHODIMP_(BOOLEAN) GetAcquiredTagRange(THIS_ \ 00399 IN PVOID * FirstTag, \ 00400 IN PVOID * LastTag); 00401 00402 00403 00404 /***************************************************************************** 00405 * IKsWorkSink 00406 ***************************************************************************** 00407 */ 00408 #undef INTERFACE 00409 #define INTERFACE IKsWorkSink 00410 00411 DECLARE_INTERFACE_(IKsWorkSink, IUnknown) 00412 { 00413 DEFINE_ABSTRACT_UNKNOWN() 00414 00415 STDMETHOD_(NTSTATUS, Work)(THIS); 00416 }; 00417 00418 /***************************************************************************** 00419 * IIrpStreamNotify 00420 ***************************************************************************** 00421 */ 00422 #undef INTERFACE 00423 #define INTERFACE IIrpStreamNotify 00424 00425 struct IRPSTREAMPOSITION; 00426 00427 DECLARE_INTERFACE_(IIrpStreamNotify, IUnknown) 00428 { 00429 DEFINE_ABSTRACT_UNKNOWN() 00430 00431 STDMETHOD_(NTSTATUS, IrpSubmitted)(THIS_ 00432 IN PIRP Irp, 00433 IN BOOLEAN WAIT)PURE; 00434 00435 STDMETHOD_(NTSTATUS, GetPosition)(THIS_ 00436 OUT struct IRPSTREAMPOSITION * Position)PURE; 00437 }; 00438 00439 /***************************************************************************** 00440 * IKsShellTransport 00441 ***************************************************************************** 00442 */ 00443 00444 #undef INTERFACE 00445 #define INTERFACE IKsShellTransport 00446 00447 #define DEFINE_ABSTRACT_IKSSHELLTRANSPORT() \ 00448 STDMETHOD_(NTSTATUS, TransferKsIrp)(THIS_ \ 00449 IN PIRP Irp, \ 00450 OUT IKsShellTransport ** Transport) PURE; \ 00451 \ 00452 STDMETHOD_(NTSTATUS, Connect)(THIS_ \ 00453 IN IKsShellTransport * StartTransport, \ 00454 OUT IKsShellTransport ** EndTransport, \ 00455 IN KSPIN_DATAFLOW DataFlow)PURE; \ 00456 \ 00457 STDMETHOD_(NTSTATUS, SetDeviceState)(THIS_ \ 00458 IN KSSTATE State1, \ 00459 IN KSSTATE State2, \ 00460 OUT IKsShellTransport ** EndTransport)PURE; \ 00461 \ 00462 STDMETHOD_(NTSTATUS, SetResetState)(THIS_ \ 00463 IN KSRESET State1, \ 00464 OUT IKsShellTransport ** EndTransport)PURE; 00465 00466 00467 DECLARE_INTERFACE_(IKsShellTransport, IUnknown) 00468 { 00469 DEFINE_ABSTRACT_UNKNOWN() 00470 00471 DEFINE_ABSTRACT_IKSSHELLTRANSPORT() 00472 }; 00473 00474 /***************************************************************************** 00475 * IIrpStream 00476 ***************************************************************************** 00477 */ 00478 struct IRPSTREAM_POSITION; 00479 struct IRPSTREAMPACKETINFO; 00480 00481 #define DEFINE_ABSTRACT_IRPSTREAM() \ 00482 STDMETHOD_(NTSTATUS, TransferKsIrp)(THIS_ \ 00483 IN PIRP Irp, \ 00484 OUT IKsShellTransport ** Transport) PURE; \ 00485 \ 00486 STDMETHOD_(NTSTATUS, Connect)(THIS_ \ 00487 IN IKsShellTransport * StartTransport, \ 00488 OUT IKsShellTransport ** EndTransport, \ 00489 IN KSPIN_DATAFLOW DataFlow)PURE; \ 00490 \ 00491 STDMETHOD_(NTSTATUS, SetDeviceState)(THIS_ \ 00492 IN KSSTATE State1, \ 00493 IN KSSTATE State2, \ 00494 OUT IKsShellTransport ** EndTransport)PURE; \ 00495 \ 00496 STDMETHOD_(NTSTATUS, SetResetState)(THIS_ \ 00497 IN KSRESET State1, \ 00498 OUT IKsShellTransport ** EndTransport)PURE; \ 00499 \ 00500 STDMETHOD_(NTSTATUS, GetPosition)(THIS_ \ 00501 IN OUT struct IRPSTREAM_POSITION * Position) PURE; \ 00502 \ 00503 STDMETHOD_(NTSTATUS, Init)(THIS_ \ 00504 IN BOOLEAN Wait, \ 00505 KSPIN_CONNECT *ConnectDetails, \ 00506 PDEVICE_OBJECT DeviceObject, \ 00507 PDMA_ADAPTER DmaAdapter) PURE; \ 00508 \ 00509 STDMETHOD_(NTSTATUS, CancelAllIrps)(THIS_ \ 00510 ULONG Wait)PURE; \ 00511 \ 00512 STDMETHOD_(VOID, TerminatePacket)(THIS); \ 00513 \ 00514 STDMETHOD_(NTSTATUS, ChangeOptionsFlag)(THIS_ \ 00515 ULONG Unknown1, \ 00516 ULONG Unknown2, \ 00517 ULONG Unknown3, \ 00518 ULONG Unknown4)PURE; \ 00519 \ 00520 STDMETHOD_(NTSTATUS, GetPacketInfo)(THIS_ \ 00521 struct IRPSTREAMPACKETINFO * Info1, \ 00522 struct IRPSTREAMPACKETINFO * Info2)PURE; \ 00523 \ 00524 STDMETHOD_(NTSTATUS, SetPacketOffsets)(THIS_ \ 00525 ULONG Unknown1, \ 00526 ULONG Unknown2)PURE; \ 00527 \ 00528 STDMETHOD_(NTSTATUS, RegisterNotifySink)(THIS_ \ 00529 IN IIrpStreamNotify * NotifyStream)PURE; 00530 00531 00532 00533 #undef INTERFACE 00534 #define INTERFACE IIrpStream 00535 00536 DECLARE_INTERFACE_(IIrpStream, IUnknown) 00537 { 00538 DEFINE_ABSTRACT_UNKNOWN() 00539 00540 DEFINE_ABSTRACT_IRPSTREAM() 00541 }; 00542 00543 00544 /***************************************************************************** 00545 * IIrpStreamPhysical 00546 ***************************************************************************** 00547 */ 00548 #undef INTERFACE 00549 #define INTERFACE IIrpStreamPhysical 00550 00551 DECLARE_INTERFACE_(IIrpStreamPhysical, IIrpStream) 00552 { 00553 DEFINE_ABSTRACT_UNKNOWN() 00554 00555 DEFINE_ABSTRACT_IRPSTREAM() 00556 00557 STDMETHOD_(NTSTATUS, GetMapping)(THIS_ 00558 IN PVOID Tag, 00559 OUT PPHYSICAL_ADDRESS PhysicalAddress, 00560 OUT PVOID * VirtualAddress, 00561 OUT PULONG ByteCount, 00562 OUT PULONG Flags)PURE; 00563 00564 }; 00565 00566 /***************************************************************************** 00567 * IIrpStreamVirtual 00568 ***************************************************************************** 00569 */ 00570 #undef INTERFACE 00571 #define INTERFACE IIrpStreamVirtual 00572 00573 DECLARE_INTERFACE_(IIrpStreamVirtual, IIrpStream) 00574 { 00575 DEFINE_ABSTRACT_UNKNOWN() 00576 00577 DEFINE_ABSTRACT_IRPSTREAM() 00578 00579 STDMETHOD_(NTSTATUS, GetLockedRegion)(THIS_ 00580 OUT PULONG OutSize, 00581 OUT PVOID * OutBuffer)PURE; 00582 00583 STDMETHOD_(NTSTATUS, Copy)(THIS_ 00584 IN BOOLEAN Wait, 00585 OUT ULONG Size, 00586 IN PULONG Buffer, 00587 OUT PVOID Result)PURE; 00588 00589 STDMETHOD_(NTSTATUS, Complete)(THIS_ 00590 IN ULONG Unknown1, 00591 IN PULONG Data)PURE; 00592 00593 STDMETHOD_(ULONG, GetIrpStreamPositionLock)(THIS); 00594 }; 00595 00596 /***************************************************************************** 00597 * IPortFilterWavePci 00598 ***************************************************************************** 00599 */ 00600 00601 #undef INTERFACE 00602 #define INTERFACE IPortFilterWavePci 00603 00604 struct IPortPinWavePci; 00605 00606 DECLARE_INTERFACE_(IPortFilterWavePci, IIrpTarget) 00607 { 00608 DEFINE_ABSTRACT_UNKNOWN() 00609 00610 DEFINE_ABSTRACT_IRPTARGET() 00611 00612 STDMETHOD_(NTSTATUS, Init)(THIS_ 00613 IN PPORTWAVEPCI Port)PURE; 00614 00615 STDMETHOD_(NTSTATUS, FreePin)(THIS_ 00616 IN struct IPortPinWavePci* Pin)PURE; 00617 }; 00618 00619 typedef IPortFilterWavePci *PPORTFILTERWAVEPCI; 00620 00621 #define IMP_IPortFilterPci \ 00622 IMP_IIrpTarget; \ 00623 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00624 IN PPORTWAVEPCI Port); \ 00625 STDMETHODIMP_(NTSTATUS) FreePin(THIS_ \ 00626 IN struct IPortPinWavePci* Pin) 00627 00628 00629 /***************************************************************************** 00630 * IPortPinWavePci 00631 ***************************************************************************** 00632 */ 00633 00634 #undef INTERFACE 00635 #define INTERFACE IPortPinWavePci 00636 00637 DECLARE_INTERFACE_(IPortPinWavePci, IIrpTarget) 00638 { 00639 DEFINE_ABSTRACT_UNKNOWN() 00640 00641 DEFINE_ABSTRACT_IRPTARGET() 00642 00643 STDMETHOD_(NTSTATUS, Init)(THIS_ 00644 IN PPORTWAVEPCI Port, 00645 IN PPORTFILTERWAVEPCI Filter, 00646 IN KSPIN_CONNECT * ConnectDetails, 00647 IN KSPIN_DESCRIPTOR * PinDescriptor, 00648 IN PDEVICE_OBJECT DeviceObject) PURE; 00649 00650 STDMETHOD_(PVOID, GetIrpStream)(THIS) PURE; 00651 STDMETHOD_(PMINIPORT, GetMiniport)(THIS) PURE; 00652 }; 00653 00654 #define IMP_IPortPinWavePci \ 00655 IMP_IIrpTarget; \ 00656 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00657 IN PPORTWAVEPCI Port, \ 00658 IN PPORTFILTERWAVEPCI Filter, \ 00659 IN KSPIN_CONNECT * ConnectDetails, \ 00660 IN KSPIN_DESCRIPTOR * PinDescriptor, \ 00661 IN PDEVICE_OBJECT DeviceObject); \ 00662 \ 00663 STDMETHODIMP_(PVOID) GetIrpStream(); \ 00664 STDMETHODIMP_(PMINIPORT) GetMiniport(THIS) 00665 00666 00667 00668 typedef IPortPinWavePci *PPORTPINWAVEPCI; 00669 00670 00671 #if (NTDDI_VERSION >= NTDDI_VISTA) 00672 00673 /***************************************************************************** 00674 * IPortFilterWaveRT 00675 ***************************************************************************** 00676 */ 00677 00678 #undef INTERFACE 00679 #define INTERFACE IPortFilterWaveRT 00680 00681 #ifndef PPORTWAVERT 00682 typedef IPortWaveRT *PPORTWAVERT; 00683 #endif 00684 00685 DECLARE_INTERFACE_(IPortFilterWaveRT, IIrpTarget) 00686 { 00687 DEFINE_ABSTRACT_UNKNOWN() 00688 00689 DEFINE_ABSTRACT_IRPTARGET() 00690 00691 STDMETHOD_(NTSTATUS, Init)(THIS_ 00692 IN PPORTWAVERT Port)PURE; 00693 }; 00694 00695 typedef IPortFilterWaveRT *PPORTFILTERWAVERT; 00696 00697 #define IMP_IPortFilterWaveRT \ 00698 IMP_IIrpTarget; \ 00699 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00700 IN PPORTWAVERT Port) 00701 00702 00703 /***************************************************************************** 00704 * IPortPinWaveRT 00705 ***************************************************************************** 00706 */ 00707 00708 #undef INTERFACE 00709 #define INTERFACE IPortPinWaveRT 00710 00711 DECLARE_INTERFACE_(IPortPinWaveRT, IIrpTarget) 00712 { 00713 DEFINE_ABSTRACT_UNKNOWN() 00714 00715 DEFINE_ABSTRACT_IRPTARGET() 00716 00717 STDMETHOD_(NTSTATUS, Init)(THIS_ 00718 IN PPORTWAVERT Port, 00719 IN PPORTFILTERWAVERT Filter, 00720 IN KSPIN_CONNECT * ConnectDetails, 00721 IN KSPIN_DESCRIPTOR * PinDescriptor, 00722 IN PDEVICE_OBJECT DeviceObject) PURE; 00723 }; 00724 00725 typedef IPortPinWaveRT *PPORTPINWAVERT; 00726 00727 #define IMP_IPortPinWaveRT \ 00728 IMP_IIrpTarget; \ 00729 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00730 IN PPORTWAVERT Port, \ 00731 IN PPORTFILTERWAVERT Filter, \ 00732 IN KSPIN_CONNECT * ConnectDetails, \ 00733 IN KSPIN_DESCRIPTOR * PinDescriptor, \ 00734 IN PDEVICE_OBJECT DeviceObject) 00735 00736 00737 #endif 00738 00739 /***************************************************************************** 00740 * IPortFilterWaveCyclic 00741 ***************************************************************************** 00742 */ 00743 00744 #undef INTERFACE 00745 #define INTERFACE IPortFilterWaveCyclic 00746 00747 struct IPortPinWaveCyclic; 00748 00749 DECLARE_INTERFACE_(IPortFilterWaveCyclic, IIrpTarget) 00750 { 00751 DEFINE_ABSTRACT_UNKNOWN() 00752 00753 DEFINE_ABSTRACT_IRPTARGET() 00754 00755 STDMETHOD_(NTSTATUS, Init)(THIS_ 00756 IN PPORTWAVECYCLIC Port)PURE; 00757 00758 STDMETHOD_(NTSTATUS, FreePin)(THIS_ 00759 IN struct IPortPinWaveCyclic* Pin)PURE; 00760 }; 00761 00762 typedef IPortFilterWaveCyclic *PPORTFILTERWAVECYCLIC; 00763 00764 #define IMP_IPortFilterWaveCyclic \ 00765 IMP_IIrpTarget; \ 00766 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00767 IN PPORTWAVECYCLIC Port); \ 00768 STDMETHODIMP_(NTSTATUS) FreePin(THIS_ \ 00769 IN struct IPortPinWaveCyclic* Pin) 00770 00771 00772 /***************************************************************************** 00773 * IPortPinWaveCyclic 00774 ***************************************************************************** 00775 */ 00776 00777 #undef INTERFACE 00778 #define INTERFACE IPortPinWaveCyclic 00779 00780 DECLARE_INTERFACE_(IPortPinWaveCyclic, IIrpTarget) 00781 { 00782 DEFINE_ABSTRACT_UNKNOWN() 00783 00784 DEFINE_ABSTRACT_IRPTARGET() 00785 00786 STDMETHOD_(NTSTATUS, Init)(THIS_ 00787 IN PPORTWAVECYCLIC Port, 00788 IN PPORTFILTERWAVECYCLIC Filter, 00789 IN KSPIN_CONNECT * ConnectDetails, 00790 IN KSPIN_DESCRIPTOR * PinDescriptor) PURE; 00791 00792 STDMETHOD_(ULONG, GetCompletedPosition)(THIS) PURE; 00793 STDMETHOD_(ULONG, GetCycleCount)(THIS) PURE; 00794 STDMETHOD_(ULONG, GetDeviceBufferSize)(THIS) PURE; 00795 STDMETHOD_(PVOID, GetIrpStream)(THIS) PURE; 00796 STDMETHOD_(PMINIPORT, GetMiniport)(THIS) PURE; 00797 }; 00798 00799 typedef IPortPinWaveCyclic *PPORTPINWAVECYCLIC; 00800 00801 #define IMP_IPortPinWaveCyclic \ 00802 IMP_IIrpTarget; \ 00803 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00804 IN PPORTWAVECYCLIC Port, \ 00805 IN PPORTFILTERWAVECYCLIC Filter, \ 00806 IN KSPIN_CONNECT * ConnectDetails, \ 00807 IN KSPIN_DESCRIPTOR * PinDescriptor); \ 00808 STDMETHODIMP_(ULONG) GetCompletedPosition(THIS); \ 00809 STDMETHODIMP_(ULONG) GetCycleCount(THIS); \ 00810 STDMETHODIMP_(ULONG) GetDeviceBufferSize(THIS); \ 00811 STDMETHODIMP_(PVOID) GetIrpStream(THIS); \ 00812 STDMETHODIMP_(PMINIPORT) GetMiniport(THIS) 00813 00814 00815 /***************************************************************************** 00816 * IPortFilterDMus 00817 ***************************************************************************** 00818 */ 00819 00820 #undef INTERFACE 00821 #define INTERFACE IPortFilterDMus 00822 00823 struct IPortPinDMus; 00824 00825 DECLARE_INTERFACE_(IPortFilterDMus, IUnknown) 00826 { 00827 DEFINE_ABSTRACT_UNKNOWN() 00828 00829 DEFINE_ABSTRACT_IRPTARGET() 00830 00831 STDMETHOD_(NTSTATUS, Init)(THIS_ 00832 IN PPORTDMUS Port)PURE; 00833 00834 STDMETHOD_(NTSTATUS, FreePin)(THIS_ 00835 IN struct IPortPinDMus* Pin)PURE; 00836 00837 STDMETHOD_(VOID, NotifyPins)(THIS) PURE; 00838 }; 00839 00840 typedef IPortFilterDMus *PPORTFILTERDMUS; 00841 00842 #define IMP_IPortFilterDMus \ 00843 IMP_IIrpTarget; \ 00844 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00845 IN PPORTDMUS Port); \ 00846 STDMETHODIMP_(NTSTATUS) FreePin(THIS_ \ 00847 IN struct IPortPinDMus* Pin); \ 00848 STDMETHODIMP_(VOID) NotifyPins(THIS) 00849 00850 /***************************************************************************** 00851 * IPortPinDMus 00852 ***************************************************************************** 00853 */ 00854 00855 #undef INTERFACE 00856 #define INTERFACE IPortPinDMus 00857 00858 DECLARE_INTERFACE_(IPortPinDMus, IIrpTarget) 00859 { 00860 DEFINE_ABSTRACT_UNKNOWN() 00861 00862 DEFINE_ABSTRACT_IRPTARGET() 00863 00864 STDMETHOD_(NTSTATUS, Init)(THIS_ 00865 IN PPORTDMUS Port, 00866 IN PPORTFILTERDMUS Filter, 00867 IN KSPIN_CONNECT * ConnectDetails, 00868 IN KSPIN_DESCRIPTOR * PinDescriptor, 00869 IN PDEVICE_OBJECT DeviceObject) PURE; 00870 00871 STDMETHOD_(VOID, Notify)(THIS) PURE; 00872 }; 00873 00874 #define IMP_IPortPinDMus \ 00875 IMP_IIrpTarget; \ 00876 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 00877 IN PPORTDMUS Port, \ 00878 IN PPORTFILTERDMUS Filter, \ 00879 IN KSPIN_CONNECT * ConnectDetails, \ 00880 IN KSPIN_DESCRIPTOR * PinDescriptor, \ 00881 IN PDEVICE_OBJECT DeviceObject); \ 00882 STDMETHODIMP_(VOID) Notify(THIS) 00883 00884 typedef IPortPinDMus *PPORTPINDMUS; 00885 00886 /***************************************************************************** 00887 * IDmaChannelInit 00888 ***************************************************************************** 00889 */ 00890 00891 #ifdef _MSC_VER 00892 00893 #define IMP_IDmaChannelEx \ 00894 STDMETHODIMP_(NTSTATUS) AllocateBuffer( \ 00895 IN ULONG BufferSize, \ 00896 IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL); \ 00897 \ 00898 STDMETHODIMP_(void) FreeBuffer(void); \ 00899 STDMETHODIMP_(ULONG) TransferCount(void); \ 00900 STDMETHODIMP_(ULONG) MaximumBufferSize(void); \ 00901 STDMETHODIMP_(ULONG) AllocatedBufferSize(void); \ 00902 STDMETHODIMP_(ULONG) BufferSize(void); \ 00903 \ 00904 STDMETHODIMP_(void) SetBufferSize( \ 00905 IN ULONG BufferSize); \ 00906 \ 00907 STDMETHODIMP_(PVOID) SystemAddress(void); \ 00908 STDMETHODIMP_(PHYSICAL_ADDRESS) PhysicalAddress(); \ 00909 STDMETHODIMP_(PADAPTER_OBJECT) GetAdapterObject(void); \ 00910 \ 00911 STDMETHODIMP_(void) CopyTo( \ 00912 IN PVOID Destination, \ 00913 IN PVOID Source, \ 00914 IN ULONG ByteCount); \ 00915 \ 00916 STDMETHODIMP_(void) CopyFrom( \ 00917 IN PVOID Destination, \ 00918 IN PVOID Source, \ 00919 IN ULONG ByteCount) 00920 00921 #else 00922 00923 #define IMP_IDmaChannelEx \ 00924 STDMETHODIMP_(NTSTATUS) AllocateBuffer( \ 00925 IN ULONG BufferSize, \ 00926 IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL); \ 00927 \ 00928 STDMETHODIMP_(void) FreeBuffer(void); \ 00929 STDMETHODIMP_(ULONG) TransferCount(void); \ 00930 STDMETHODIMP_(ULONG) MaximumBufferSize(void); \ 00931 STDMETHODIMP_(ULONG) AllocatedBufferSize(void); \ 00932 STDMETHODIMP_(ULONG) BufferSize(void); \ 00933 \ 00934 STDMETHODIMP_(void) SetBufferSize( \ 00935 IN ULONG BufferSize); \ 00936 \ 00937 STDMETHODIMP_(PVOID) SystemAddress(void); \ 00938 STDMETHODIMP_(PHYSICAL_ADDRESS) PhysicalAddress( \ 00939 IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL); \ 00940 STDMETHODIMP_(PADAPTER_OBJECT) GetAdapterObject(void); \ 00941 \ 00942 STDMETHODIMP_(void) CopyTo( \ 00943 IN PVOID Destination, \ 00944 IN PVOID Source, \ 00945 IN ULONG ByteCount); \ 00946 \ 00947 STDMETHODIMP_(void) CopyFrom( \ 00948 IN PVOID Destination, \ 00949 IN PVOID Source, \ 00950 IN ULONG ByteCount) 00951 00952 00953 00954 #endif 00955 00956 00957 #define IMP_IDmaChannelSlaveEx \ 00958 IMP_IDmaChannelEx; \ 00959 STDMETHODIMP_(NTSTATUS) Start( \ 00960 IN ULONG MapSize, \ 00961 IN BOOLEAN WriteToDevice); \ 00962 \ 00963 STDMETHODIMP_(NTSTATUS) Stop(void); \ 00964 STDMETHODIMP_(ULONG) ReadCounter(void); \ 00965 \ 00966 STDMETHODIMP_(NTSTATUS) WaitForTC( \ 00967 ULONG Timeout) 00968 00969 #define IMP_IDmaChannelInit\ 00970 IMP_IDmaChannelSlaveEx;\ 00971 STDMETHODIMP_(NTSTATUS) Init( \ 00972 IN PDEVICE_DESCRIPTION DeviceDescription, \ 00973 IN PDEVICE_OBJECT DeviceObject) 00974 00975 #ifdef _MSC_VER 00976 00977 #define DEFINE_ABSTRACT_DMACHANNEL_EX() \ 00978 STDMETHOD_(NTSTATUS, AllocateBuffer)( THIS_ \ 00979 IN ULONG BufferSize, \ 00980 IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL) PURE; \ 00981 \ 00982 STDMETHOD_(void, FreeBuffer)( THIS ) PURE; \ 00983 STDMETHOD_(ULONG, TransferCount)( THIS ) PURE; \ 00984 STDMETHOD_(ULONG, MaximumBufferSize)( THIS ) PURE; \ 00985 STDMETHOD_(ULONG, AllocatedBufferSize)( THIS ) PURE; \ 00986 STDMETHOD_(ULONG, BufferSize)( THIS ) PURE; \ 00987 \ 00988 STDMETHOD_(void, SetBufferSize)( THIS_ \ 00989 IN ULONG BufferSize) PURE; \ 00990 \ 00991 STDMETHOD_(PVOID, SystemAddress)( THIS ) PURE; \ 00992 STDMETHOD_(PHYSICAL_ADDRESS, PhysicalAddress)( THIS) PURE; \ 00993 STDMETHOD_(PADAPTER_OBJECT, GetAdapterObject)( THIS ) PURE; \ 00994 \ 00995 STDMETHOD_(void, CopyTo)( THIS_ \ 00996 IN PVOID Destination, \ 00997 IN PVOID Source, \ 00998 IN ULONG ByteCount) PURE; \ 00999 \ 01000 STDMETHOD_(void, CopyFrom)( THIS_ \ 01001 IN PVOID Destination, \ 01002 IN PVOID Source, \ 01003 IN ULONG ByteCount) PURE; 01004 #else 01005 01006 #define DEFINE_ABSTRACT_DMACHANNEL_EX() \ 01007 STDMETHOD_(NTSTATUS, AllocateBuffer)( THIS_ \ 01008 IN ULONG BufferSize, \ 01009 IN PPHYSICAL_ADDRESS PhysicalAddressConstraint OPTIONAL) PURE; \ 01010 \ 01011 STDMETHOD_(void, FreeBuffer)( THIS ) PURE; \ 01012 STDMETHOD_(ULONG, TransferCount)( THIS ) PURE; \ 01013 STDMETHOD_(ULONG, MaximumBufferSize)( THIS ) PURE; \ 01014 STDMETHOD_(ULONG, AllocatedBufferSize)( THIS ) PURE; \ 01015 STDMETHOD_(ULONG, BufferSize)( THIS ) PURE; \ 01016 \ 01017 STDMETHOD_(void, SetBufferSize)( THIS_ \ 01018 IN ULONG BufferSize) PURE; \ 01019 \ 01020 STDMETHOD_(PVOID, SystemAddress)( THIS ) PURE; \ 01021 STDMETHOD_(PHYSICAL_ADDRESS, PhysicalAddress)( THIS_ \ 01022 IN PPHYSICAL_ADDRESS Address) PURE; \ 01023 STDMETHOD_(PADAPTER_OBJECT, GetAdapterObject)( THIS ) PURE; \ 01024 \ 01025 STDMETHOD_(void, CopyTo)( THIS_ \ 01026 IN PVOID Destination, \ 01027 IN PVOID Source, \ 01028 IN ULONG ByteCount) PURE; \ 01029 \ 01030 STDMETHOD_(void, CopyFrom)( THIS_ \ 01031 IN PVOID Destination, \ 01032 IN PVOID Source, \ 01033 IN ULONG ByteCount) PURE; 01034 01035 #endif 01036 #undef INTERFACE 01037 #define INTERFACE IDmaChannelInit 01038 01039 DECLARE_INTERFACE_(IDmaChannelInit, IUnknown) 01040 { 01041 DEFINE_ABSTRACT_UNKNOWN() 01042 DEFINE_ABSTRACT_DMACHANNEL_EX() 01043 DEFINE_ABSTRACT_DMACHANNELSLAVE() 01044 01045 STDMETHOD_(NTSTATUS, Init)( THIS_ 01046 IN PDEVICE_DESCRIPTION DeviceDescription, 01047 IN PDEVICE_OBJECT DeviceObject) PURE; 01048 }; 01049 01050 #undef INTERFACE 01051 01052 /***************************************************************************** 01053 * IPortFilterTopology 01054 ***************************************************************************** 01055 */ 01056 01057 #undef INTERFACE 01058 #define INTERFACE IPortFilterTopology 01059 01060 DECLARE_INTERFACE_(IPortFilterTopology, IIrpTarget) 01061 { 01062 DEFINE_ABSTRACT_UNKNOWN() 01063 01064 DEFINE_ABSTRACT_IRPTARGET() 01065 01066 STDMETHOD_(NTSTATUS, Init)(THIS_ 01067 IN PPORTTOPOLOGY Port)PURE; 01068 }; 01069 01070 typedef IPortFilterTopology *PPORTFILTERTOPOLOGY; 01071 01072 #define IMP_IPortFilterTopology \ 01073 IMP_IIrpTarget; \ 01074 STDMETHODIMP_(NTSTATUS) Init(THIS_ \ 01075 IN PPORTTOPOLOGY Port) 01076 01077 #undef INTERFACE 01078 01079 /***************************************************************************** 01080 * IPortWaveRTStreamInit 01081 ***************************************************************************** 01082 */ 01083 01084 #undef INTERFACE 01085 #define INTERFACE IPortWaveRTStreamInit 01086 01087 01088 DECLARE_INTERFACE_(IPortWaveRTStreamInit, IUnknown) 01089 { 01090 DEFINE_ABSTRACT_UNKNOWN() 01091 01092 STDMETHOD_(PMDL, AllocatePagesForMdl) 01093 ( THIS_ 01094 IN PHYSICAL_ADDRESS HighAddress, 01095 IN SIZE_T TotalBytes 01096 ) PURE; 01097 01098 STDMETHOD_(PMDL, AllocateContiguousPagesForMdl) 01099 ( THIS_ 01100 IN PHYSICAL_ADDRESS LowAddress, 01101 IN PHYSICAL_ADDRESS HighAddress, 01102 IN SIZE_T TotalBytes 01103 ) PURE; 01104 01105 STDMETHOD_(PVOID, MapAllocatedPages) 01106 ( THIS_ 01107 IN PMDL MemoryDescriptorList, 01108 IN MEMORY_CACHING_TYPE CacheType 01109 ) PURE; 01110 01111 STDMETHOD_(VOID, UnmapAllocatedPages) 01112 ( THIS_ 01113 IN PVOID BaseAddress, 01114 IN PMDL MemoryDescriptorList 01115 ) PURE; 01116 01117 STDMETHOD_(VOID, FreePagesFromMdl) 01118 ( THIS_ 01119 IN PMDL MemoryDescriptorList 01120 ) PURE; 01121 01122 STDMETHOD_(ULONG, GetPhysicalPagesCount) 01123 ( THIS_ 01124 IN PMDL MemoryDescriptorList 01125 ) PURE; 01126 01127 STDMETHOD_(PHYSICAL_ADDRESS, GetPhysicalPageAddress) 01128 ( THIS_ 01129 IN PPHYSICAL_ADDRESS Address, 01130 IN PMDL MemoryDescriptorList, 01131 IN ULONG Index 01132 ) PURE; 01133 }; 01134 01135 #undef INTERFACE 01136 01137 #define IMP_IPortWaveRTStreamInit \ 01138 STDMETHODIMP_(PMDL) AllocatePagesForMdl \ 01139 ( THIS_ \ 01140 IN PHYSICAL_ADDRESS HighAddress, \ 01141 IN SIZE_T TotalBytes \ 01142 ); \ 01143 \ 01144 STDMETHODIMP_(PMDL) AllocateContiguousPagesForMdl \ 01145 ( THIS_ \ 01146 IN PHYSICAL_ADDRESS LowAddress, \ 01147 IN PHYSICAL_ADDRESS HighAddress, \ 01148 IN SIZE_T TotalBytes \ 01149 ); \ 01150 \ 01151 STDMETHODIMP_(PVOID) MapAllocatedPages \ 01152 ( THIS_ \ 01153 IN PMDL MemoryDescriptorList, \ 01154 IN MEMORY_CACHING_TYPE CacheType \ 01155 ); \ 01156 \ 01157 STDMETHODIMP_(VOID) UnmapAllocatedPages \ 01158 ( THIS_ \ 01159 IN PVOID BaseAddress, \ 01160 IN PMDL MemoryDescriptorList \ 01161 ); \ 01162 \ 01163 STDMETHODIMP_(VOID) FreePagesFromMdl \ 01164 ( THIS_ \ 01165 IN PMDL MemoryDescriptorList \ 01166 ); \ 01167 \ 01168 STDMETHODIMP_(ULONG) GetPhysicalPagesCount \ 01169 ( THIS_ \ 01170 IN PMDL MemoryDescriptorList \ 01171 ); \ 01172 \ 01173 STDMETHODIMP_(PHYSICAL_ADDRESS) GetPhysicalPageAddress \ 01174 ( THIS_ \ 01175 IN PPHYSICAL_ADDRESS Address, \ 01176 IN PMDL MemoryDescriptorList, \ 01177 IN ULONG Index \ 01178 ) 01179 01180 #ifndef IMP_IPortClsVersion 01181 01182 #define IMP_IPortClsVersion \ 01183 STDMETHODIMP_(DWORD) GetVersion(void); 01184 01185 #endif 01186 01187 #ifdef IMP_IPortWaveRT 01188 #define IMP_IPortWaveRT IMP_IPort 01189 #endif 01190 01191 #endif Generated on Sat May 26 2012 04:27:07 for ReactOS by
1.7.6.1
|