ReactOS  0.4.14-dev-599-g2d4d3f5
clocks.c
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: ReactOS Kernel Streaming
4  * FILE: drivers/ksfilter/ks/clocks.c
5  * PURPOSE: KS Clocks functions
6  * PROGRAMMER: Johannes Anderwald
7  */
8 
9 #include "precomp.h"
10 
11 #define NDEBUG
12 #include <debug.h>
13 
14 typedef struct
15 {
21 
23  PFNKSSETTIMER SetTimer;
24  PFNKSCANCELTIMER CancelTimer;
25  PFNKSCORRELATEDTIME CorrelatedTime;
29 
31 
32 typedef struct
33 {
39 
47 
49 
50 KSPROPERTY_SET ClockPropertySet[] =
51 {
52  {
54  sizeof(ClockPropertyTable) / sizeof(KSPROPERTY_ITEM),
55  (const KSPROPERTY_ITEM*)&ClockPropertyTable,
56  0,
57  NULL
58  }
59 };
60 
65 {
67  return 0;
68 }
69 
74  OUT PLONGLONG SystemTime)
75 {
77  return 0;
78 }
79 
84 {
86  return 0;
87 }
88 
93  OUT PLONGLONG SystemTime)
94 {
96  return 0;
97 }
98 
100 NTAPI
102  IN PIRP Irp,
104  IN OUT PVOID Data)
105 {
108 
109  DPRINT("ClockPropertyTime\n");
110 
111  *Time = ClockGetTime(IoStack->FileObject);
112 
113  Irp->IoStatus.Information = sizeof(LONGLONG);
114  return STATUS_SUCCESS;
115 }
116 
117 NTSTATUS
118 NTAPI
120  IN PIRP Irp,
122  IN OUT PVOID Data)
123 {
126 
127  DPRINT("ClockPropertyPhysicalTime\n");
128 
129  *Time = ClockGetPhysicalTime(IoStack->FileObject);
130 
131  Irp->IoStatus.Information = sizeof(LONGLONG);
132  return STATUS_SUCCESS;
133 }
134 
135 NTSTATUS
136 NTAPI
138  IN PIRP Irp,
140  IN OUT PVOID Data)
141 {
144 
145  DPRINT("ClockPropertyCorrelatedTime\n");
146 
147  Time->Time = ClockGetCorrelatedTime(IoStack->FileObject, &Time->SystemTime);
148 
149  Irp->IoStatus.Information = sizeof(KSCORRELATED_TIME);
150  return STATUS_SUCCESS;
151 }
152 
153 NTSTATUS
154 NTAPI
156  IN PIRP Irp,
158  IN OUT PVOID Data)
159 {
162 
163  DPRINT("ClockPropertyCorrelatedPhysicalTime\n");
164 
165  Time->Time = ClockGetCorrelatedPhysicalTime(IoStack->FileObject, &Time->SystemTime);
166 
167  Irp->IoStatus.Information = sizeof(KSCORRELATED_TIME);
168  return STATUS_SUCCESS;
169 }
170 
171 NTSTATUS
172 NTAPI
174  IN PIRP Irp,
176  IN OUT PVOID Data)
177 {
179  PKSIOBJECT_HEADER ObjectHeader;
180  PIO_STACK_LOCATION IoStack;
182 
183  DPRINT("ClockPropertyResolution\n");
184 
185  /* get stack location */
187 
188  /* get the object header */
189  ObjectHeader = (PKSIOBJECT_HEADER)IoStack->FileObject->FsContext2;
190 
191  /* sanity check */
192  ASSERT(ObjectHeader);
193 
194  /* locate ks pin implementation from KSPIN offset */
195  Clock = (PKSICLOCK)ObjectHeader->ObjectType;
196 
197  Resolution->Error = Clock->DefaultClock->Error;
198  Resolution->Granularity = Clock->DefaultClock->Granularity;
199 
200  Irp->IoStatus.Information = sizeof(KSRESOLUTION);
201  return STATUS_SUCCESS;
202 }
203 
204 NTSTATUS
205 NTAPI
207  IN PIRP Irp,
209  IN OUT PVOID Data)
210 {
212  PKSIOBJECT_HEADER ObjectHeader;
214  PIO_STACK_LOCATION IoStack;
215 
216  DPRINT("ClockPropertyState\n");
217 
218  /* get stack location */
220 
221  /* get the object header */
222  ObjectHeader = (PKSIOBJECT_HEADER)IoStack->FileObject->FsContext2;
223 
224  /* sanity check */
225  ASSERT(ObjectHeader);
226 
227  /* locate ks pin implementation from KSPIN offset */
228  Clock = (PKSICLOCK)ObjectHeader->ObjectType;
229 
230  *State = Clock->DefaultClock->State;
231  Irp->IoStatus.Information = sizeof(KSSTATE);
232 
233  return STATUS_SUCCESS;
234 }
235 
236 NTSTATUS
237 NTAPI
239  IN PIRP Irp,
241  IN OUT PVOID Data)
242 {
243  PKSCLOCK_FUNCTIONTABLE Table = (PKSCLOCK_FUNCTIONTABLE)Data;
244 
245  DPRINT("ClockPropertyFunctionTable\n");
246 
247  Table->GetCorrelatedPhysicalTime = ClockGetCorrelatedPhysicalTime;
248  Table->GetCorrelatedTime = ClockGetCorrelatedTime;
249  Table->GetPhysicalTime = ClockGetPhysicalTime;
250  Table->GetTime = ClockGetTime;
251 
252  return STATUS_SUCCESS;
253 }
254 
255 
256 /*
257  @implemented
258 */
264 {
267  ClockCreate,
268  sizeof(KSCLOCK_CREATE),
269  GENERIC_READ,
270  ClockHandle);
271 }
272 
273 /*
274  @implemented
275 */
276 KSDDKAPI
277 NTSTATUS
278 NTAPI
280  IN PIRP Irp,
281  OUT PKSCLOCK_CREATE* OutClockCreate)
282 {
285  ULONG Size;
286 
287  /* minimum request size */
288  Size = sizeof(KSCLOCK_CREATE);
289 
290  /* copy create request */
293  &Size,
294  (PVOID*)&ClockCreate);
295 
296  if (!NT_SUCCESS(Status))
297  return Status;
298 
299  if (ClockCreate->CreateFlags != 0)
300  {
301  /* flags must be zero */
304  }
305 
306  *OutClockCreate = ClockCreate;
307  return STATUS_SUCCESS;
308 }
309 
310 NTSTATUS
311 NTAPI
314  IN PIRP Irp)
315 {
316  PIO_STACK_LOCATION IoStack;
320 
321  DPRINT("IKsClock_DispatchDeviceIoControl\n");
322 
323  /* get current io stack */
325 
326  /* FIXME support events */
327  ASSERT(IoStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_KS_PROPERTY);
328 
329  /* sanity check */
330  ASSERT(IoStack->Parameters.DeviceIoControl.InputBufferLength >= sizeof(KSPROPERTY));
331 
332  /* call property handler */
334 
335  /* get property from input buffer */
336  Property = (PKSPROPERTY)IoStack->Parameters.DeviceIoControl.Type3InputBuffer;
337 
339  DPRINT("IKsClock_DispatchDeviceIoControl property Set |%S| Id %u Flags %x Status %lx ResultLength %lu\n", GuidString.Buffer, Property->Id, Property->Flags, Status, Irp->IoStatus.Information);
341 
342 
343  Irp->IoStatus.Status = STATUS_SUCCESS;
345 
346  return STATUS_SUCCESS;
347 }
348 
349 NTSTATUS
350 NTAPI
353  IN PIRP Irp)
354 {
356 
357  Irp->IoStatus.Status = STATUS_SUCCESS;
359 
360  return STATUS_SUCCESS;
361 }
362 
363 static KSDISPATCH_TABLE DispatchTable =
364 {
375 };
376 
377 /*
378  @implemented
379 */
380 KSDDKAPI
381 NTSTATUS
382 NTAPI
384  IN PIRP Irp,
385  IN PKSDEFAULTCLOCK DefaultClock)
386 {
390 
392  if (!NT_SUCCESS(Status))
393  return Status;
394 
395  /* let's allocate the clock struct */
397  if (!Clock)
398  {
401  }
402 
403  /* now allocate the object header */
404  Status = KsAllocateObjectHeader((PVOID*)&Clock->ObjectHeader, 0, NULL, Irp, &DispatchTable);
405 
406  /* did it work */
407  if (!NT_SUCCESS(Status))
408  {
409  /* failed */
411  FreeItem(Clock);
412  return Status;
413  }
414 
415  /* initialize clock */
416  /* FIXME IKsClock */
417  Clock->ObjectHeader->ObjectType = (PVOID)Clock;
418  Clock->ref = 1;
419  Clock->ClockCreate = ClockCreate;
420  Clock->DefaultClock = (PKSIDEFAULTCLOCK)DefaultClock;
421 
422  /* increment reference count */
423  InterlockedIncrement(&Clock->DefaultClock->ReferenceCount);
424 
425  return Status;
426 }
427 
428 /*
429  @implemented
430 */
431 KSDDKAPI
432 NTSTATUS
433 NTAPI
435  OUT PKSDEFAULTCLOCK* DefaultClock)
436 {
437  return KsAllocateDefaultClockEx(DefaultClock, NULL, NULL, NULL, NULL, NULL, 0);
438 }
439 
440 /*
441  @unimplemented
442 */
443 KSDDKAPI
444 NTSTATUS
445 NTAPI
447  OUT PKSDEFAULTCLOCK* DefaultClock,
449  IN PFNKSSETTIMER SetTimer OPTIONAL,
450  IN PFNKSCANCELTIMER CancelTimer OPTIONAL,
451  IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL,
453  IN ULONG Flags)
454 {
456 
457  if (!DefaultClock)
459 
460  /* allocate default clock */
462  if (!Clock)
464 
465  /* initialize default clock */
466  KeInitializeSpinLock(&Clock->TimeLock);
467  KeInitializeTimer(&Clock->Timer);
468  Clock->ReferenceCount = 1;
469  Clock->Context = Context;
470  Clock->SetTimer = SetTimer;
471  Clock->CancelTimer = CancelTimer;
472  Clock->CorrelatedTime = CorrelatedTime;
473  Clock->Flags = Flags;
474 
475  if (Resolution)
476  {
477  if (SetTimer)
478  {
479  Clock->Error = Resolution->Error;
480  }
481 
482  if (CorrelatedTime)
483  {
484  Clock->Granularity = Resolution->Granularity;
485  }
486  }
487 
488  *DefaultClock = (PKSDEFAULTCLOCK)Clock;
489  return STATUS_SUCCESS;
490 }
491 
492 /*
493  @implemented
494 */
495 KSDDKAPI
496 VOID
497 NTAPI
499  IN PKSDEFAULTCLOCK DefaultClock)
500 {
501  PKSIDEFAULTCLOCK Clock = (PKSIDEFAULTCLOCK)DefaultClock;
502 
503  InterlockedDecrement(&Clock->ReferenceCount);
504 
505  if (Clock->ReferenceCount == 0)
506  {
507  /* free default clock */
508  FreeItem(Clock);
509  }
510 }
511 
512 /*
513  @implemented
514 */
515 KSDDKAPI
516 KSSTATE
517 NTAPI
519  IN PKSDEFAULTCLOCK DefaultClock)
520 {
521  PKSIDEFAULTCLOCK Clock = (PKSIDEFAULTCLOCK)DefaultClock;
522  return Clock->State;
523 }
524 
525 /*
526  @unimplemented
527 */
528 KSDDKAPI
529 VOID
530 NTAPI
532  IN PKSDEFAULTCLOCK DefaultClock,
533  IN KSSTATE State)
534 {
535  PKSIDEFAULTCLOCK Clock = (PKSIDEFAULTCLOCK)DefaultClock;
536 
537  if (State != Clock->State)
538  {
539  /* FIXME set time etc */
540  Clock->State = State;
541  }
542 
543 }
544 
545 /*
546  @implemented
547 */
548 KSDDKAPI
549 LONGLONG
550 NTAPI
552  IN PKSDEFAULTCLOCK DefaultClock)
553 {
554  LONGLONG Time = 0LL;
555  PKSIDEFAULTCLOCK Clock = (PKSIDEFAULTCLOCK)DefaultClock;
556 
557  Time = ExInterlockedCompareExchange64(&Clock->Time, &Time, &Time, &Clock->TimeLock);
558 
559  return Time;
560 }
561 
562 /*
563  @implemented
564 */
565 KSDDKAPI
566 VOID
567 NTAPI
569  IN PKSDEFAULTCLOCK DefaultClock,
570  IN LONGLONG Time)
571 {
572  PKSIDEFAULTCLOCK Clock = (PKSIDEFAULTCLOCK)DefaultClock;
573 
574  /* set the time safely */
575  ExInterlockedCompareExchange64(&Clock->Time, &Time, &Clock->Time, &Clock->TimeLock);
576 }
NTSTATUS NTAPI ClockPropertyTime(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
Definition: clocks.c:101
KSDDKAPI VOID NTAPI KsSetDefaultClockTime(IN PKSDEFAULTCLOCK DefaultClock, IN LONGLONG Time)
Definition: clocks.c:568
struct KSRESOLUTION * PKSRESOLUTION
static PWSTR GuidString
Definition: apphelp.c:91
#define IOCTL_KS_PROPERTY
Definition: ks.h:127
#define IN
Definition: typedefs.h:38
ASMGENDATA Table[]
Definition: genincdata.c:61
KSPIN_LOCK TimeLock
Definition: clocks.c:17
KSPROPERTY_SET ClockPropertySet[]
Definition: clocks.c:50
KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:67
#define LL
Definition: tui.h:85
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)
Definition: clocks.c:446
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
NTSTATUS NTAPI ClockPropertyState(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
Definition: clocks.c:206
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:22
LONGLONG Granularity
Definition: clocks.c:26
struct KSIDEFAULTCLOCK * PKSIDEFAULTCLOCK
NTSTATUS NTAPI KspCreateObjectType(IN HANDLE ParentHandle, IN LPWSTR ObjectType, PVOID CreateParameters, UINT CreateParametersSize, IN ACCESS_MASK DesiredAccess, OUT PHANDLE NodeHandle)
Definition: topology.c:16
struct KSICLOCK * PKSICLOCK
_In_ PIRP Irp
Definition: csq.h:116
NTSTATUS NTAPI IKsClock_DispatchDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: clocks.c:312
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
PKSIDEFAULTCLOCK DefaultClock
Definition: clocks.c:36
_In_ PKSCLOCK_CREATE _Out_ PHANDLE ClockHandle
Definition: ks.h:4527
struct KSIOBJECT_HEADER * PKSIOBJECT_HEADER
LONGLONG Error
Definition: clocks.c:27
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
Definition: misc.c:30
LONG NTSTATUS
Definition: precomp.h:26
ULONG Flags
Definition: clocks.c:28
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: irp.c:1218
KSDDKAPI VOID NTAPI KsFreeDefaultClock(IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:498
PKSIOBJECT_HEADER ObjectHeader
Definition: clocks.c:37
NTSTATUS NTAPI ClockPropertyResolution(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
Definition: clocks.c:173
KTIMER Timer
Definition: clocks.c:19
LONGLONG Time
Definition: clocks.c:16
DEFINE_KSPROPERTY_CLOCKSET(ClockPropertyTable, ClockPropertyTime, ClockPropertyPhysicalTime, ClockPropertyCorrelatedTime, ClockPropertyCorrelatedPhysicalTime, ClockPropertyResolution, ClockPropertyState, ClockPropertyFunctionTable)
LONGLONG FASTCALL ClockGetTime(IN PFILE_OBJECT FileObject)
Definition: clocks.c:82
#define FASTCALL
Definition: nt_native.h:50
#define KSDDKAPI
Definition: ks.h:40
NTSTATUS KspCopyCreateRequest(IN PIRP Irp, IN LPWSTR ObjectClass, IN OUT PULONG Size, OUT PVOID *Result)
Definition: misc.c:101
NTSTATUS NTAPI ClockPropertyCorrelatedTime(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
Definition: clocks.c:137
#define KSSTRING_Clock
Definition: ks.h:49
KSDDKAPI NTSTATUS NTAPI KsValidateClockCreateRequest(IN PIRP Irp, OUT PKSCLOCK_CREATE *OutClockCreate)
Definition: clocks.c:279
KSDDKAPI NTSTATUS NTAPI KsPropertyHandler(IN PIRP Irp, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet)
Definition: property.c:358
_In_ NDIS_HANDLE _In_ PNDIS_REQUEST Request
Definition: ndis.h:5173
__GNU_EXTENSION typedef __int64 * PLONGLONG
Definition: ntbasedef.h:389
NTKERNELAPI LONGLONG FASTCALL ExInterlockedCompareExchange64(IN OUT PLONGLONG Destination, IN PLONGLONG Exchange, IN PLONGLONG Comparand, IN PKSPIN_LOCK Lock)
Definition: interlocked.c:113
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
VOID FreeItem(IN PVOID Item)
Definition: misc.c:43
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
enum KSSTATE * PKSSTATE
long LONG
Definition: pedump.c:60
KSSTATE State
Definition: clocks.c:18
const GUID KSPROPSETID_Clock
Definition: pin.c:115
PFNKSCANCELTIMER CancelTimer
Definition: clocks.c:24
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
Definition: kefuncs.h:251
static KSDISPATCH_TABLE DispatchTable
Definition: clocks.c:363
smooth NULL
Definition: ftsmooth.c:416
ULONG CreateFlags
Definition: ks.h:1857
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
Definition: timerobj.c:233
void DPRINT(...)
Definition: polytest.cpp:61
void * PVOID
Definition: retypes.h:9
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultClock(IN PIRP Irp, IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:383
LONGLONG FASTCALL ClockGetCorrelatedTime(IN PFILE_OBJECT FileObject, OUT PLONGLONG SystemTime)
Definition: clocks.c:72
PVOID Context
Definition: clocks.c:22
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
PVOID ObjectType
Definition: kstypes.h:30
int64_t LONGLONG
Definition: typedefs.h:66
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:1156
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
KSDDKAPI VOID NTAPI KsSetDefaultClockState(IN PKSDEFAULTCLOCK DefaultClock, IN KSSTATE State)
Definition: clocks.c:531
KSDDKAPI KSSTATE NTAPI KsGetDefaultClockState(IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:518
KSDDKAPI LONGLONG NTAPI KsGetDefaultClockTime(IN PKSDEFAULTCLOCK DefaultClock)
Definition: clocks.c:551
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClock(OUT PKSDEFAULTCLOCK *DefaultClock)
Definition: clocks.c:434
* PFILE_OBJECT
Definition: iotypes.h:1955
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
Definition: dispatch.c:19
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
NTSTATUS NTAPI IKsClock_DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: clocks.c:351
#define InterlockedDecrement
Definition: armddk.h:52
PKSCLOCK_CREATE ClockCreate
Definition: clocks.c:35
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:414
#define STATUS_INVALID_PARAMETER_1
Definition: ntstatus.h:461
KSDDKAPI NTSTATUS NTAPI KsCreateClock(IN HANDLE ConnectionHandle, IN PKSCLOCK_CREATE ClockCreate, OUT PHANDLE ClockHandle)
Definition: clocks.c:260
#define GENERIC_READ
Definition: compat.h:124
PVOID PKSDEFAULTCLOCK
Definition: ks.h:1854
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
PFNKSCORRELATEDTIME CorrelatedTime
Definition: clocks.c:25
PFNKSSETTIMER SetTimer
Definition: clocks.c:23
Status
Definition: gdiplustypes.h:24
LONG ReferenceCount
Definition: clocks.c:20
NTSTATUS NTAPI ClockPropertyPhysicalTime(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
Definition: clocks.c:119
_In_ DWORD Property
Definition: setupapi.h:1545
NTSTATUS NTAPI ClockPropertyFunctionTable(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
Definition: clocks.c:238
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2745
PFILE_OBJECT FileObject
Definition: iotypes.h:2813
enum State_ State
Definition: pofuncs.h:54
#define InterlockedIncrement
Definition: armddk.h:53
KSSTATE
Definition: ks.h:1214
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)
Definition: irp.c:1238
LONG ref
Definition: clocks.c:34
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
struct KSCORRELATED_TIME * PKSCORRELATED_TIME
_In_ PKSCLOCK_CREATE ClockCreate
Definition: ks.h:4527
#define OUT
Definition: typedefs.h:39
static BYTE Resolution
Definition: mouse.c:35
struct tagContext Context
Definition: acpixf.h:1030
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader(OUT KSOBJECT_HEADER *Header, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, IN PIRP Irp, IN KSDISPATCH_TABLE *Table)
Definition: api.c:610
unsigned int ULONG
Definition: retypes.h:1
#define IO_NO_INCREMENT
Definition: iotypes.h:566
#define UNIMPLEMENTED
Definition: debug.h:114
LONGLONG FASTCALL ClockGetCorrelatedPhysicalTime(IN PFILE_OBJECT FileObject, OUT PLONGLONG SystemTime)
Definition: clocks.c:91
LONGLONG FASTCALL ClockGetPhysicalTime(IN PFILE_OBJECT FileObject)
Definition: clocks.c:63
struct KSIDENTIFIER * PKSPROPERTY
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
Definition: ks.h:4536
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
Definition: iotypes.h:2772
int Clock
Definition: mmuobject.c:63
return STATUS_SUCCESS
Definition: btrfs.c:2938
static PLARGE_INTEGER Time
Definition: time.c:105
NTSTATUS NTAPI ClockPropertyCorrelatedPhysicalTime(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
Definition: clocks.c:155
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68