update for HEAD-2003091401
[reactos.git] / drivers / net / ndis / ndis / time.c
index 95b0416..18c5e7f 100644 (file)
 #include <ndissys.h>
 
 
+VOID STDCALL
+MiniportTimerDpc(
+    PKDPC Dpc,
+    PVOID DeferredContext,
+    PVOID SystemArgument1,
+    PVOID SystemArgument2)
+{
+    PNDIS_MINIPORT_TIMER Timer;
+
+    Timer = (PNDIS_MINIPORT_TIMER)DeferredContext;
+
+    Timer->MiniportTimerFunction (NULL, Timer->MiniportTimerContext, NULL, NULL);
+}
+
+
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisCancelTimer(
     IN  PNDIS_TIMER Timer,
     OUT PBOOLEAN    TimerCancelled)
 {
-} 
+    *TimerCancelled = KeCancelTimer (&Timer->Timer);
+}
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisGetCurrentSystemTime (
-    IN  OUT PLONGLONG   pSystemTime)
+    IN  OUT PLARGE_INTEGER   pSystemTime)
 {
+    KeQuerySystemTime (pSystemTime);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisInitializeTimer(
@@ -34,18 +60,28 @@ NdisInitializeTimer(
     IN      PNDIS_TIMER_FUNCTION    TimerFunction,
     IN      PVOID                   FunctionContext)
 {
+    KeInitializeTimer (&Timer->Timer);
+
+    KeInitializeDpc (&Timer->Dpc, (PKDEFERRED_ROUTINE)TimerFunction, FunctionContext);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisMCancelTimer(
     IN  PNDIS_MINIPORT_TIMER    Timer,
     OUT PBOOLEAN                TimerCancelled)
 {
+    *TimerCancelled = KeCancelTimer (&Timer->Timer);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisMInitializeTimer(
@@ -54,33 +90,64 @@ NdisMInitializeTimer(
     IN      PNDIS_TIMER_FUNCTION    TimerFunction,
     IN      PVOID                   FunctionContext)
 {
+    KeInitializeTimer (&Timer->Timer);
+
+    KeInitializeDpc (&Timer->Dpc, MiniportTimerDpc, (PVOID) Timer);
+
+    Timer->MiniportTimerFunction = TimerFunction;
+    Timer->MiniportTimerContext = FunctionContext;
+    Timer->Miniport = MiniportAdapterHandle;
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisMSetPeriodicTimer(
-    IN PNDIS_MINIPORT_TIMER    Timer,
-    IN UINT                    MillisecondsPeriod)
+    IN  PNDIS_MINIPORT_TIMER    Timer,
+    IN  UINT                    MillisecondsPeriod)
 {
+    LARGE_INTEGER Timeout;
+
+    Timeout.QuadPart = MillisecondsPeriod * -10000;
+
+    KeSetTimerEx (&Timer->Timer, Timeout, MillisecondsPeriod, &Timer->Dpc);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisMSetTimer(
     IN  PNDIS_MINIPORT_TIMER    Timer,
     IN  UINT                    MillisecondsToDelay)
 {
+    LARGE_INTEGER Timeout;
+
+    Timeout.QuadPart = MillisecondsToDelay * -10000;
+
+    KeSetTimer (&Timer->Timer, Timeout, &Timer->Dpc);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisSetTimer(
     IN  PNDIS_TIMER Timer,
     IN  UINT        MillisecondsToDelay)
 {
+    LARGE_INTEGER Timeout;
+
+    Timeout.QuadPart = MillisecondsToDelay * -10000;
+
+    KeSetTimer (&Timer->Timer, Timeout, &Timer->Dpc);
 }
 
 /* EOF */