#include "precomp.h"
#include <debug.h>
Go to the source code of this file.
|
NTSTATUS NTAPI | ClockPropertyTime (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data) |
|
NTSTATUS NTAPI | ClockPropertyPhysicalTime (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data) |
|
NTSTATUS NTAPI | ClockPropertyCorrelatedTime (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data) |
|
NTSTATUS NTAPI | ClockPropertyCorrelatedPhysicalTime (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data) |
|
NTSTATUS NTAPI | ClockPropertyResolution (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data) |
|
NTSTATUS NTAPI | ClockPropertyState (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data) |
|
NTSTATUS NTAPI | ClockPropertyFunctionTable (IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data) |
|
| DEFINE_KSPROPERTY_CLOCKSET (ClockPropertyTable, ClockPropertyTime, ClockPropertyPhysicalTime, ClockPropertyCorrelatedTime, ClockPropertyCorrelatedPhysicalTime, ClockPropertyResolution, ClockPropertyState, ClockPropertyFunctionTable) |
|
LONGLONG FASTCALL | ClockGetPhysicalTime (IN PFILE_OBJECT FileObject) |
|
LONGLONG FASTCALL | ClockGetCorrelatedTime (IN PFILE_OBJECT FileObject, OUT PLONGLONG SystemTime) |
|
LONGLONG FASTCALL | ClockGetTime (IN PFILE_OBJECT FileObject) |
|
LONGLONG FASTCALL | ClockGetCorrelatedPhysicalTime (IN PFILE_OBJECT FileObject, OUT PLONGLONG SystemTime) |
|
KSDDKAPI NTSTATUS NTAPI | KsCreateClock (IN HANDLE ConnectionHandle, IN PKSCLOCK_CREATE ClockCreate, OUT PHANDLE ClockHandle) |
|
KSDDKAPI NTSTATUS NTAPI | KsValidateClockCreateRequest (IN PIRP Irp, OUT PKSCLOCK_CREATE *OutClockCreate) |
|
NTSTATUS NTAPI | IKsClock_DispatchDeviceIoControl (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) |
|
NTSTATUS NTAPI | IKsClock_DispatchClose (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) |
|
KSDDKAPI NTSTATUS NTAPI | KsCreateDefaultClock (IN PIRP Irp, IN PKSDEFAULTCLOCK DefaultClock) |
|
KSDDKAPI NTSTATUS NTAPI | KsAllocateDefaultClock (OUT PKSDEFAULTCLOCK *DefaultClock) |
|
KSDDKAPI NTSTATUS NTAPI | KsAllocateDefaultClockEx (OUT PKSDEFAULTCLOCK *DefaultClock, IN PVOID Context OPTIONAL, IN PFNKSSETTIMER SetTimer OPTIONAL, IN PFNKSCANCELTIMER CancelTimer OPTIONAL, IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, IN const KSRESOLUTION *Resolution OPTIONAL, IN ULONG Flags) |
|
KSDDKAPI VOID NTAPI | KsFreeDefaultClock (IN PKSDEFAULTCLOCK DefaultClock) |
|
KSDDKAPI KSSTATE NTAPI | KsGetDefaultClockState (IN PKSDEFAULTCLOCK DefaultClock) |
|
KSDDKAPI VOID NTAPI | KsSetDefaultClockState (IN PKSDEFAULTCLOCK DefaultClock, IN KSSTATE State) |
|
KSDDKAPI LONGLONG NTAPI | KsGetDefaultClockTime (IN PKSDEFAULTCLOCK DefaultClock) |
|
KSDDKAPI VOID NTAPI | KsSetDefaultClockTime (IN PKSDEFAULTCLOCK DefaultClock, IN LONGLONG Time) |
|
◆ NDEBUG
◆ PKSICLOCK
◆ PKSIDEFAULTCLOCK
◆ ClockGetCorrelatedPhysicalTime()
◆ ClockGetCorrelatedTime()
◆ ClockGetPhysicalTime()
◆ ClockGetTime()
◆ ClockPropertyCorrelatedPhysicalTime()
Definition at line 155 of file clocks.c.
159{
162
163 DPRINT(
"ClockPropertyCorrelatedPhysicalTime\n");
164
166
169}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
LONGLONG FASTCALL ClockGetCorrelatedPhysicalTime(IN PFILE_OBJECT FileObject, OUT PLONGLONG SystemTime)
struct KSCORRELATED_TIME * PKSCORRELATED_TIME
static PLARGE_INTEGER Time
◆ ClockPropertyCorrelatedTime()
Definition at line 137 of file clocks.c.
141{
144
145 DPRINT(
"ClockPropertyCorrelatedTime\n");
146
148
151}
LONGLONG FASTCALL ClockGetCorrelatedTime(IN PFILE_OBJECT FileObject, OUT PLONGLONG SystemTime)
◆ ClockPropertyFunctionTable()
Definition at line 238 of file clocks.c.
242{
243 PKSCLOCK_FUNCTIONTABLE
Table = (PKSCLOCK_FUNCTIONTABLE)
Data;
244
245 DPRINT(
"ClockPropertyFunctionTable\n");
246
251
253}
LONGLONG FASTCALL ClockGetTime(IN PFILE_OBJECT FileObject)
LONGLONG FASTCALL ClockGetPhysicalTime(IN PFILE_OBJECT FileObject)
◆ ClockPropertyPhysicalTime()
Definition at line 119 of file clocks.c.
123{
126
127 DPRINT(
"ClockPropertyPhysicalTime\n");
128
130
133}
__GNU_EXTENSION typedef __int64 * PLONGLONG
◆ ClockPropertyResolution()
Definition at line 173 of file clocks.c.
177{
182
183 DPRINT(
"ClockPropertyResolution\n");
184
185
187
188
190
191
193
194
196
199
202}
struct KSICLOCK * PKSICLOCK
struct KSRESOLUTION * PKSRESOLUTION
struct KSIOBJECT_HEADER * PKSIOBJECT_HEADER
◆ ClockPropertyState()
Definition at line 206 of file clocks.c.
210{
215
216 DPRINT(
"ClockPropertyState\n");
217
218
220
221
223
224
226
227
229
232
234}
◆ ClockPropertyTime()
Definition at line 101 of file clocks.c.
105{
108
109 DPRINT(
"ClockPropertyTime\n");
110
112
115}
◆ DEFINE_KSPROPERTY_CLOCKSET()
◆ IKsClock_DispatchClose()
Definition at line 351 of file clocks.c.
354{
356
359
361}
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
◆ IKsClock_DispatchDeviceIoControl()
Definition at line 312 of file clocks.c.
315{
320
321 DPRINT(
"IKsClock_DispatchDeviceIoControl\n");
322
323
325
326
328
329
331
332
334
335
337
341
342
345
347}
KSPROPERTY_SET ClockPropertySet[]
KSDDKAPI NTSTATUS NTAPI KsPropertyHandler(IN PIRP Irp, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
struct KSIDENTIFIER * PKSPROPERTY
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
#define IOCTL_KS_PROPERTY
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
struct _IO_STACK_LOCATION::@1583::@1584 DeviceIoControl
union _IO_STACK_LOCATION::@1583 Parameters
◆ KsAllocateDefaultClock()
Definition at line 434 of file clocks.c.
436{
438}
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClockEx(OUT PKSDEFAULTCLOCK *DefaultClock, IN PVOID Context OPTIONAL, IN PFNKSSETTIMER SetTimer OPTIONAL, IN PFNKSCANCELTIMER CancelTimer OPTIONAL, IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, IN const KSRESOLUTION *Resolution OPTIONAL, IN ULONG Flags)
◆ KsAllocateDefaultClockEx()
Definition at line 446 of file clocks.c.
454{
456
457 if (!DefaultClock)
459
460
464
465
468 Clock->ReferenceCount = 1;
471 Clock->CancelTimer = CancelTimer;
472 Clock->CorrelatedTime = CorrelatedTime;
474
476 {
478 {
480 }
481
482 if (CorrelatedTime)
483 {
485 }
486 }
487
490}
#define KeInitializeSpinLock(sl)
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
#define STATUS_INVALID_PARAMETER_1
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define STATUS_INSUFFICIENT_RESOURCES
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
_Must_inspect_result_ _In_ ULONG Flags
Referenced by IKsPin_DispatchCreateClock(), and KsAllocateDefaultClock().
◆ KsCreateClock()
Definition at line 260 of file clocks.c.
264{
271}
_In_ PKSCLOCK_CREATE ClockCreate
_In_ PKSCLOCK_CREATE _Out_ PHANDLE ClockHandle
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
NTSTATUS NTAPI KspCreateObjectType(IN HANDLE ParentHandle, IN LPWSTR ObjectType, PVOID CreateParameters, UINT CreateParametersSize, IN ACCESS_MASK DesiredAccess, OUT PHANDLE NodeHandle)
◆ KsCreateDefaultClock()
Definition at line 383 of file clocks.c.
386{
390
394
395
398 {
401 }
402
403
405
406
408 {
409
413 }
414
415
416
421
422
424
426}
#define InterlockedIncrement
KSDDKAPI NTSTATUS NTAPI KsValidateClockCreateRequest(IN PIRP Irp, OUT PKSCLOCK_CREATE *OutClockCreate)
struct KSIDEFAULTCLOCK * PKSIDEFAULTCLOCK
#define NT_SUCCESS(StatCode)
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader(OUT KSOBJECT_HEADER *Header, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, IN PIRP Irp, IN KSDISPATCH_TABLE *Table)
VOID FreeItem(IN PVOID Item)
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
Referenced by IKsPin_DispatchCreateClock().
◆ KsFreeDefaultClock()
Definition at line 498 of file clocks.c.
500{
502
504
505 if (
Clock->ReferenceCount == 0)
506 {
507
509 }
510}
#define InterlockedDecrement
◆ KsGetDefaultClockState()
◆ KsGetDefaultClockTime()
Definition at line 551 of file clocks.c.
553{
556
558
560}
#define ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock)
◆ KsSetDefaultClockState()
Definition at line 531 of file clocks.c.
534{
536
538 {
539
541 }
542
543}
◆ KsSetDefaultClockTime()
◆ KsValidateClockCreateRequest()
Definition at line 279 of file clocks.c.
282{
286
287
289
290
295
298
300 {
301
304 }
305
308}
NTSTATUS KspCopyCreateRequest(IN PIRP Irp, IN LPWSTR ObjectClass, IN OUT PULONG Size, OUT PVOID *Result)
#define STATUS_INVALID_PARAMETER
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Referenced by KsCreateDefaultClock().
◆ ClockPropertySet
KSPROPERTY_SET ClockPropertySet[] |
Initial value:=
{
{
sizeof(ClockPropertyTable) / sizeof(KSPROPERTY_ITEM),
(const KSPROPERTY_ITEM*)&ClockPropertyTable,
0,
}
}
#define KSPROPSETID_Clock
Definition at line 50 of file clocks.c.
Referenced by IKsClock_DispatchDeviceIoControl().
◆ DispatchTable
Initial value:=
{
}
NTSTATUS NTAPI IKsClock_DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IKsClock_DispatchDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI BOOLEAN NTAPI KsDispatchFastReadFailure(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI BOOLEAN NTAPI KsDispatchFastIoDeviceControlFailure(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, IN ULONG IoControlCode, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
Definition at line 363 of file clocks.c.