f1b3d079a4b0bfc043ecfd205e4bf9cd3d03513f
[reactos.git] / reactos / drivers / network / ndis / ndis / stubs.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
4 * FILE: ndis/stubs.c
5 * PURPOSE: Stubs
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
7 * REVISIONS:
8 * CSH 01/08-2000 Created
9 */
10
11 #include "ndissys.h"
12
13 /*
14 * @unimplemented
15 */
16 VOID
17 EXPORT
18 NdisCompleteQueryStatistics(
19 IN NDIS_HANDLE NdisAdapterHandle,
20 IN PNDIS_REQUEST NdisRequest,
21 IN NDIS_STATUS Status)
22 {
23 UNIMPLEMENTED
24 }
25
26
27 /*
28 * @unimplemented
29 */
30 VOID
31 EXPORT
32 NdisCompleteUnbindAdapter(
33 IN NDIS_HANDLE UnbindAdapterContext,
34 IN NDIS_STATUS Status)
35 {
36 UNIMPLEMENTED
37 }
38
39
40 /*
41 * @implemented
42 */
43 #undef NdisInterlockedAddUlong
44 VOID
45 EXPORT
46 NdisInterlockedAddUlong (
47 IN PULONG Addend,
48 IN ULONG Increment,
49 IN PNDIS_SPIN_LOCK SpinLock)
50 {
51 ExInterlockedAddUlong ( Addend, Increment, (PKSPIN_LOCK)SpinLock );
52 }
53
54
55 /*
56 * @implemented
57 */
58 #undef NdisInterlockedInsertHeadList
59 PLIST_ENTRY
60 EXPORT
61 NdisInterlockedInsertHeadList(
62 IN PLIST_ENTRY ListHead,
63 IN PLIST_ENTRY ListEntry,
64 IN PNDIS_SPIN_LOCK SpinLock)
65 {
66 return ExInterlockedInsertHeadList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
67 }
68
69
70 /*
71 * @implemented
72 */
73 #undef NdisInterlockedInsertTailList
74 PLIST_ENTRY
75 EXPORT
76 NdisInterlockedInsertTailList(
77 IN PLIST_ENTRY ListHead,
78 IN PLIST_ENTRY ListEntry,
79 IN PNDIS_SPIN_LOCK SpinLock)
80 {
81 return ExInterlockedInsertTailList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
82 }
83
84
85 /*
86 * @implemented
87 */
88 #undef NdisInterlockedRemoveHeadList
89 PLIST_ENTRY
90 EXPORT
91 NdisInterlockedRemoveHeadList(
92 IN PLIST_ENTRY ListHead,
93 IN PNDIS_SPIN_LOCK SpinLock)
94 {
95 return ExInterlockedRemoveHeadList ( ListHead, (PKSPIN_LOCK)SpinLock );
96 }
97
98 \f
99 /*
100 * @unimplemented
101 */
102 VOID
103 EXPORT
104 NdisMapFile(
105 OUT PNDIS_STATUS Status,
106 OUT PVOID * MappedBuffer,
107 IN NDIS_HANDLE FileHandle)
108 {
109 UNIMPLEMENTED
110 }
111
112 typedef struct _NDIS_HANDLE_OBJECT
113 {
114 HANDLE FileHandle;
115 BOOLEAN Mapped;
116 ULONG FileLength;
117 PVOID MapBuffer;
118 } NDIS_HANDLE_OBJECT, *PNDIS_HANDLE_OBJECT;
119
120 __inline
121 PNDIS_HANDLE_OBJECT
122 NDIS_HANDLE_TO_POBJECT ( NDIS_HANDLE handle )
123 {
124 return (PNDIS_HANDLE_OBJECT)handle;
125 }
126
127 __inline
128 NDIS_HANDLE
129 NDIS_POBJECT_TO_HANDLE ( PNDIS_HANDLE_OBJECT obj )
130 {
131 return (NDIS_HANDLE)obj;
132 }
133
134 const WCHAR* NDIS_FILE_FOLDER = L"\\SystemRoot\\System32\\Drivers\\";
135
136 /*
137 * @implemented
138 */
139 VOID
140 EXPORT
141 NdisCloseFile(
142 IN NDIS_HANDLE FileHandle)
143 {
144 PNDIS_HANDLE_OBJECT FileHandleObject;
145
146 ASSERT_IRQL(PASSIVE_LEVEL);
147
148 ASSERT ( FileHandle );
149
150 FileHandleObject = NDIS_HANDLE_TO_POBJECT(FileHandle);
151
152 ASSERT ( FileHandleObject->FileHandle );
153
154 /*
155 if ( FileHandleObject->Mapped )
156 NdisUnmapFile ( FileHandle );
157 */
158
159 ZwClose ( FileHandleObject->FileHandle );
160
161 memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
162
163 ExFreePool ( FileHandleObject );
164 }
165
166
167 /*
168 * @unimplemented
169 */
170 NDIS_STATUS
171 EXPORT
172 NdisIMDeInitializeDeviceInstance(
173 IN NDIS_HANDLE NdisMiniportHandle)
174 {
175 UNIMPLEMENTED
176
177 return NDIS_STATUS_FAILURE;
178 }
179
180
181 /*
182 * @unimplemented
183 */
184 #undef NdisIMInitializeDeviceInstance
185 NDIS_STATUS
186 EXPORT
187 NdisIMInitializeDeviceInstance(
188 IN NDIS_HANDLE DriverHandle,
189 IN PNDIS_STRING DeviceInstance)
190 {
191 UNIMPLEMENTED
192
193 return NDIS_STATUS_FAILURE;
194 }
195
196
197 /*
198 * @unimplemented
199 */
200 NDIS_STATUS
201 EXPORT
202 NdisIMRegisterLayeredMiniport(
203 IN NDIS_HANDLE NdisWrapperHandle,
204 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
205 IN UINT CharacteristicsLength,
206 OUT PNDIS_HANDLE DriverHandle)
207 {
208 UNIMPLEMENTED
209
210 return NDIS_STATUS_FAILURE;
211 }
212
213
214 /*
215 * @unimplemented
216 */
217 #undef NdisMWanIndicateReceive
218 VOID
219 EXPORT
220 NdisMWanIndicateReceive(
221 OUT PNDIS_STATUS Status,
222 IN NDIS_HANDLE MiniportAdapterHandle,
223 IN NDIS_HANDLE NdisLinkContext,
224 IN PUCHAR PacketBuffer,
225 IN UINT PacketSize)
226 {
227 UNIMPLEMENTED
228 }
229
230
231 /*
232 * @unimplemented
233 */
234 #undef NdisMWanIndicateReceiveComplete
235 VOID
236 EXPORT
237 NdisMWanIndicateReceiveComplete(
238 IN NDIS_HANDLE MiniportAdapterHandle)
239 {
240 UNIMPLEMENTED
241 }
242
243
244 /*
245 * @unimplemented
246 */
247 #undef NdisMWanSendComplete
248 VOID
249 EXPORT
250 NdisMWanSendComplete(
251 IN NDIS_HANDLE MiniportAdapterHandle,
252 IN PNDIS_WAN_PACKET Packet,
253 IN NDIS_STATUS Status)
254 {
255 UNIMPLEMENTED
256 }
257
258
259 /*
260 * @unimplemented
261 */
262 VOID
263 EXPORT
264 NdisOpenFile(
265 OUT PNDIS_STATUS Status,
266 OUT PNDIS_HANDLE FileHandle,
267 OUT PUINT FileLength,
268 IN PNDIS_STRING FileName,
269 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
270 {
271 NDIS_STRING FullFileName;
272 OBJECT_ATTRIBUTES ObjectAttributes;
273 PNDIS_HANDLE_OBJECT FileHandleObject = NULL;
274 IO_STATUS_BLOCK IoStatusBlock;
275
276 ASSERT_IRQL(PASSIVE_LEVEL);
277
278 *Status = NDIS_STATUS_SUCCESS;
279 FullFileName.Buffer = NULL;
280
281 ASSERT ( Status && FileName );
282
283 FullFileName.Length = sizeof(NDIS_FILE_FOLDER);
284 FullFileName.MaximumLength = FileName->MaximumLength + sizeof(NDIS_FILE_FOLDER);
285 FullFileName.Buffer = ExAllocatePool ( NonPagedPool, FullFileName.MaximumLength );
286
287 if ( !FullFileName.Buffer )
288 {
289 *Status = NDIS_STATUS_RESOURCES;
290 goto cleanup;
291 }
292
293 FileHandleObject = ExAllocatePool ( NonPagedPool, sizeof(NDIS_HANDLE_OBJECT) );
294 if ( !FileHandleObject )
295 {
296 *Status = NDIS_STATUS_RESOURCES;
297 goto cleanup;
298 }
299 memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
300
301 memmove ( FullFileName.Buffer, NDIS_FILE_FOLDER, FullFileName.Length );
302 *Status = RtlAppendUnicodeStringToString ( &FullFileName, FileName );
303 if ( !NT_SUCCESS(*Status) )
304 {
305 *Status = NDIS_STATUS_FAILURE;
306 goto cleanup;
307 }
308
309 InitializeObjectAttributes ( &ObjectAttributes,
310 &FullFileName,
311 OBJ_CASE_INSENSITIVE,
312 NULL,
313 NULL );
314
315 *Status = ZwCreateFile (
316 &FileHandleObject->FileHandle,
317 FILE_READ_DATA|SYNCHRONIZE,
318 &ObjectAttributes,
319 &IoStatusBlock,
320 NULL, // PLARGE_INTEGER AllocationSize
321 0, // ULONG FileAttributes
322 FILE_SHARE_READ, // ULONG ShareAccess
323 FILE_CREATE, // ULONG CreateDisposition
324 FILE_SYNCHRONOUS_IO_NONALERT, // ULONG CreateOptions
325 0, // PVOID EaBuffer
326 0 ); // ULONG EaLength
327
328 if ( !NT_SUCCESS(*Status) )
329 {
330 *Status = NDIS_STATUS_FAILURE;
331 }
332
333 cleanup:
334 if ( FullFileName.Buffer != NULL )
335 {
336 ExFreePool ( FullFileName.Buffer );
337 FullFileName.Buffer = NULL;
338 }
339 if ( !NT_SUCCESS(*Status) )
340 {
341 if( FileHandleObject ) {
342 ExFreePool ( FileHandleObject );
343 FileHandleObject = NULL;
344 }
345 *FileHandle = NULL;
346 }
347 else
348 *FileHandle = NDIS_POBJECT_TO_HANDLE(FileHandleObject);
349
350 return;
351 }
352
353
354 /*
355 NdisOpenGlobalConfiguration
356 */
357
358 #if 0
359 VOID
360 EXPORT
361 NdisRegisterTdiCallBack(
362 IN TDI_REGISTER_CALLBACK RegsterCallback)
363 {
364 UNIMPLEMENTED
365 }
366 #endif
367
368
369 /*
370 NdisScheduleWorkItem
371 */
372
373
374 #if 0
375 VOID
376 EXPORT
377 NdisSetProtocolFilter(
378 OUT PNDIS_STATUS Status,
379 IN NDIS_HANDLE NdisBindingHandle,
380 IN RECEIVE_HANDLER ReceiveHandler,
381 IN RECEIVE_PACKET_HANDLER ReceivePacketHandler,
382 IN NDIS_MEDIUM Medium,
383 IN UINT Offset,
384 IN UINT Size,
385 IN PUCHAR Pattern)
386 {
387 UNIMPLEMENTED
388 }
389 #endif
390
391
392 /*
393 * @implemented
394 */
395 CCHAR
396 EXPORT
397 NdisSystemProcessorCount(
398 VOID)
399 {
400 return (CCHAR)KeNumberProcessors;
401 }
402
403
404 /*
405 * @unimplemented
406 */
407 VOID
408 EXPORT
409 NdisUnmapFile(
410 IN NDIS_HANDLE FileHandle)
411 {
412 UNIMPLEMENTED
413 }
414
415
416 /*
417 NdisUpcaseUnicodeString
418 NdisUpdateSharedMemory@4
419 */
420
421
422 /*
423 NdisWriteEventLogEntry
424 */
425
426
427
428 /* NDIS 5.0 extensions */
429
430 /*
431 * @unimplemented
432 */
433 VOID
434 EXPORT
435 NdisCompletePnPEvent(
436 IN NDIS_STATUS Status,
437 IN NDIS_HANDLE NdisBindingHandle,
438 IN PNET_PNP_EVENT NetPnPEvent)
439 /*
440 * FUNCTION:
441 * ARGUMENTS:
442 * NOTES:
443 * NDIS 5.0
444 */
445 {
446 UNIMPLEMENTED
447 }
448
449
450 /*
451 * @unimplemented
452 */
453 VOID
454 EXPORT
455 NdisConvertStringToAtmAddress(
456 OUT PNDIS_STATUS Status,
457 IN PNDIS_STRING String,
458 OUT PATM_ADDRESS AtmAddress)
459 /*
460 * FUNCTION:
461 * ARGUMENTS:
462 * NOTES:
463 * NDIS 5.0
464 */
465 {
466 UNIMPLEMENTED
467 }
468
469
470 /*
471 * @implemented
472 */
473 VOID
474 EXPORT
475 NdisGetCurrentProcessorCounts(
476 OUT PULONG pIdleCount,
477 OUT PULONG pKernelAndUser,
478 OUT PULONG pIndex)
479 /*
480 * FUNCTION:
481 * ARGUMENTS:
482 * NOTES:
483 * NDIS 5.0
484 */
485 {
486 ExGetCurrentProcessorCounts( (PULONG) pIdleCount, (PULONG) pKernelAndUser, (PULONG) pIndex);
487 }
488
489
490 /*
491 * @unimplemented
492 */
493 VOID
494 EXPORT
495 NdisGetDriverHandle(
496 IN PNDIS_HANDLE NdisBindingHandle,
497 OUT PNDIS_HANDLE NdisDriverHandle)
498 /*
499 * FUNCTION:
500 * ARGUMENTS:
501 * NOTES:
502 * NDIS 5.0
503 */
504 {
505 UNIMPLEMENTED
506 }
507
508
509 /*
510 * @unimplemented
511 */
512 PNDIS_PACKET
513 EXPORT
514 NdisGetReceivedPacket(
515 IN PNDIS_HANDLE NdisBindingHandle,
516 IN PNDIS_HANDLE MacContext)
517 /*
518 * FUNCTION:
519 * ARGUMENTS:
520 * NOTES:
521 * NDIS 5.0
522 */
523 {
524 UNIMPLEMENTED
525
526 return NULL;
527 }
528
529
530 /*
531 * @implemented
532 */
533 VOID
534 EXPORT
535 NdisGetSystemUpTime(
536 OUT PULONG pSystemUpTime)
537 /*
538 * FUNCTION:
539 * ARGUMENTS:
540 * NOTES:
541 * NDIS 5.0
542 */
543 {
544 /* Get the uptime of the system in msec */
545 *pSystemUpTime = ( (SharedUserData->TickCountLowDeprecated * SharedUserData->TickCountMultiplier) / 0x1000000);
546 }
547
548
549 /*
550 * @implemented
551 */
552 #undef NdisInterlockedDecrement
553 LONG
554 EXPORT
555 NdisInterlockedDecrement(
556 IN PLONG Addend)
557 /*
558 * FUNCTION:
559 * ARGUMENTS:
560 * NOTES:
561 * NDIS 5.0
562 */
563 {
564 return InterlockedDecrement ( Addend );
565 }
566
567
568 /*
569 * @implemented
570 */
571 #undef NdisInterlockedIncrement
572 LONG
573 EXPORT
574 NdisInterlockedIncrement(
575 IN PLONG Addend)
576 /*
577 * FUNCTION:
578 * ARGUMENTS:
579 * NOTES:
580 * NDIS 5.0
581 */
582 {
583 return InterlockedIncrement ( Addend );
584 }
585
586
587 /*
588 * @implemented
589 */
590 #undef NdisInterlockedPopEntrySList
591 PSINGLE_LIST_ENTRY
592 EXPORT
593 NdisInterlockedPopEntrySList(
594 IN PSLIST_HEADER ListHead,
595 IN PKSPIN_LOCK Lock)
596 /*
597 * FUNCTION:
598 * ARGUMENTS:
599 * NOTES:
600 * NDIS 5.0
601 */
602 {
603 return ExInterlockedPopEntrySList ( ListHead, Lock );
604 }
605
606
607 /*
608 * @implemented
609 */
610 #undef NdisInterlockedPushEntrySList
611 PSINGLE_LIST_ENTRY
612 EXPORT
613 NdisInterlockedPushEntrySList(
614 IN PSLIST_HEADER ListHead,
615 IN PSINGLE_LIST_ENTRY ListEntry,
616 IN PKSPIN_LOCK Lock)
617 /*
618 * FUNCTION:
619 * ARGUMENTS:
620 * NOTES:
621 * NDIS 5.0
622 */
623 {
624 return ExInterlockedPushEntrySList ( ListHead, ListEntry, Lock );
625 }
626
627
628 /*
629 * @unimplemented
630 */
631 NDIS_STATUS
632 EXPORT
633 NdisMDeregisterDevice(
634 IN NDIS_HANDLE NdisDeviceHandle)
635 /*
636 * FUNCTION:
637 * ARGUMENTS:
638 * NOTES:
639 * NDIS 5.0
640 */
641 {
642 UNIMPLEMENTED
643
644 return NDIS_STATUS_FAILURE;
645 }
646
647
648 /*
649 * @unimplemented
650 */
651 VOID
652 EXPORT
653 NdisMGetDeviceProperty(
654 IN NDIS_HANDLE MiniportAdapterHandle,
655 IN OUT PDEVICE_OBJECT *PhysicalDeviceObject OPTIONAL,
656 IN OUT PDEVICE_OBJECT *FunctionalDeviceObject OPTIONAL,
657 IN OUT PDEVICE_OBJECT *NextDeviceObject OPTIONAL,
658 IN OUT PCM_RESOURCE_LIST *AllocatedResources OPTIONAL,
659 IN OUT PCM_RESOURCE_LIST *AllocatedResourcesTranslated OPTIONAL)
660 /*
661 * FUNCTION:
662 * ARGUMENTS:
663 * NOTES:
664 * NDIS 5.0
665 */
666 {
667 UNIMPLEMENTED
668 }
669
670
671 /*
672 * @unimplemented
673 */
674 NDIS_STATUS
675 EXPORT
676 NdisMInitializeScatterGatherDma(
677 IN NDIS_HANDLE MiniportAdapterHandle,
678 IN BOOLEAN Dma64BitAddresses,
679 IN ULONG MaximumPhysicalMapping)
680 /*
681 * FUNCTION:
682 * ARGUMENTS:
683 * NOTES:
684 * NDIS 5.0
685 */
686 {
687 UNIMPLEMENTED
688
689 return NDIS_STATUS_FAILURE;
690 }
691
692
693 /*
694 * @unimplemented
695 */
696 NDIS_STATUS
697 EXPORT
698 NdisMPromoteMiniport(
699 IN NDIS_HANDLE MiniportAdapterHandle)
700 /*
701 * FUNCTION:
702 * ARGUMENTS:
703 * NOTES:
704 * NDIS 5.0
705 */
706 {
707 UNIMPLEMENTED
708
709 return NDIS_STATUS_FAILURE;
710 }
711
712
713 /*
714 * @unimplemented
715 */
716 NDIS_STATUS
717 EXPORT
718 NdisMQueryAdapterInstanceName(
719 OUT PNDIS_STRING AdapterInstanceName,
720 IN NDIS_HANDLE MiniportAdapterHandle)
721 /*
722 * FUNCTION:
723 * ARGUMENTS:
724 * NOTES:
725 * NDIS 5.0
726 */
727 {
728 UNIMPLEMENTED
729
730 return NDIS_STATUS_FAILURE;
731 }
732
733
734 /*
735 * @unimplemented
736 */
737 NDIS_STATUS
738 EXPORT
739 NdisMRegisterDevice(
740 IN NDIS_HANDLE NdisWrapperHandle,
741 IN PNDIS_STRING DeviceName,
742 IN PNDIS_STRING SymbolicName,
743 IN PDRIVER_DISPATCH MajorFunctions[],
744 OUT PDEVICE_OBJECT *pDeviceObject,
745 OUT NDIS_HANDLE *NdisDeviceHandle)
746 /*
747 * FUNCTION:
748 * ARGUMENTS:
749 * NOTES:
750 * NDIS 5.0
751 */
752 {
753 UNIMPLEMENTED
754
755 return NDIS_STATUS_FAILURE;
756 }
757
758
759 /*
760 * @unimplemented
761 */
762 VOID
763 EXPORT
764 NdisMRegisterUnloadHandler(
765 IN NDIS_HANDLE NdisWrapperHandle,
766 IN PDRIVER_UNLOAD UnloadHandler)
767 /*
768 * FUNCTION:
769 * ARGUMENTS:
770 * NOTES:
771 * NDIS 5.0
772 */
773 {
774 UNIMPLEMENTED
775 }
776
777
778 /*
779 * @unimplemented
780 */
781 NDIS_STATUS
782 EXPORT
783 NdisMRemoveMiniport(
784 IN NDIS_HANDLE MiniportAdapterHandle)
785 /*
786 * FUNCTION:
787 * ARGUMENTS:
788 * NOTES:
789 * NDIS 5.0
790 */
791 {
792 UNIMPLEMENTED
793
794 return NDIS_STATUS_FAILURE;
795 }
796
797
798 /*
799 * @unimplemented
800 */
801 NDIS_STATUS
802 EXPORT
803 NdisMSetMiniportSecondary(
804 IN NDIS_HANDLE MiniportAdapterHandle,
805 IN NDIS_HANDLE PrimaryMiniportAdapterHandle)
806 /*
807 * FUNCTION:
808 * ARGUMENTS:
809 * NOTES:
810 * NDIS 5.0
811 */
812 {
813 UNIMPLEMENTED
814
815 return NDIS_STATUS_FAILURE;
816 }
817
818
819
820 /*
821 * @unimplemented
822 */
823 NDIS_STATUS
824 EXPORT
825 NdisQueryAdapterInstanceName(
826 OUT PNDIS_STRING AdapterInstanceName,
827 IN NDIS_HANDLE NdisBindingHandle)
828 /*
829 * FUNCTION:
830 * ARGUMENTS:
831 * NOTES:
832 * NDIS 5.0
833 */
834 {
835 UNIMPLEMENTED
836
837 return NDIS_STATUS_FAILURE;
838 }
839
840
841 /*
842 * @unimplemented
843 */
844 ULONG
845 EXPORT
846 NdisReadPcmciaAttributeMemory(
847 IN NDIS_HANDLE NdisAdapterHandle,
848 IN ULONG Offset,
849 IN PVOID Buffer,
850 IN ULONG Length)
851 /*
852 * FUNCTION:
853 * ARGUMENTS:
854 * NOTES:
855 * NDIS 5.0
856 */
857 {
858 UNIMPLEMENTED
859
860 return 0;
861 }
862
863
864 /*
865 * @unimplemented
866 */
867 ULONG
868 EXPORT
869 NdisWritePcmciaAttributeMemory(
870 IN NDIS_HANDLE NdisAdapterHandle,
871 IN ULONG Offset,
872 IN PVOID Buffer,
873 IN ULONG Length)
874 /*
875 * FUNCTION:
876 * ARGUMENTS:
877 * NOTES:
878 * NDIS 5.0
879 */
880 {
881 UNIMPLEMENTED
882
883 return 0;
884 }
885
886
887 /* NDIS 5.0 extensions for intermediate drivers */
888
889 /*
890 * @unimplemented
891 */
892 VOID
893 EXPORT
894 NdisIMAssociateMiniport(
895 IN NDIS_HANDLE DriverHandle,
896 IN NDIS_HANDLE ProtocolHandle)
897 /*
898 * FUNCTION:
899 * ARGUMENTS:
900 * NOTES:
901 * NDIS 5.0
902 */
903 {
904 UNIMPLEMENTED
905 }
906
907
908 /*
909 * @unimplemented
910 */
911 NDIS_STATUS
912 EXPORT
913 NdisIMCancelInitializeDeviceInstance(
914 IN NDIS_HANDLE DriverHandle,
915 IN PNDIS_STRING DeviceInstance)
916 /*
917 * FUNCTION:
918 * ARGUMENTS:
919 * NOTES:
920 * NDIS 5.0
921 */
922 {
923 UNIMPLEMENTED
924
925 return NDIS_STATUS_FAILURE;
926 }
927
928
929 /*
930 * @unimplemented
931 */
932 VOID
933 EXPORT
934 NdisIMCopySendCompletePerPacketInfo(
935 IN PNDIS_PACKET DstPacket,
936 IN PNDIS_PACKET SrcPacket)
937 /*
938 * FUNCTION:
939 * ARGUMENTS:
940 * NOTES:
941 * NDIS 5.0
942 */
943 {
944 UNIMPLEMENTED
945 }
946
947
948 /*
949 * @unimplemented
950 */
951 VOID
952 EXPORT
953 NdisIMCopySendPerPacketInfo(
954 IN PNDIS_PACKET DstPacket,
955 IN PNDIS_PACKET SrcPacket)
956 /*
957 * FUNCTION:
958 * ARGUMENTS:
959 * NOTES:
960 * NDIS 5.0
961 */
962 {
963 UNIMPLEMENTED
964 }
965
966
967 /*
968 * @unimplemented
969 */
970 VOID
971 EXPORT
972 NdisIMDeregisterLayeredMiniport(
973 IN NDIS_HANDLE DriverHandle)
974 /*
975 * FUNCTION:
976 * ARGUMENTS:
977 * NOTES:
978 * NDIS 5.0
979 */
980 {
981 UNIMPLEMENTED
982 }
983
984
985 /*
986 * @unimplemented
987 */
988 NDIS_HANDLE
989 EXPORT
990 NdisIMGetBindingContext(
991 IN NDIS_HANDLE NdisBindingHandle)
992 /*
993 * FUNCTION:
994 * ARGUMENTS:
995 * NOTES:
996 * NDIS 5.0
997 */
998 {
999 UNIMPLEMENTED
1000
1001 return (NDIS_HANDLE)NULL;
1002 }
1003
1004
1005 /*
1006 * @unimplemented
1007 */
1008 NDIS_HANDLE
1009 EXPORT
1010 NdisIMGetDeviceContext(
1011 IN NDIS_HANDLE MiniportAdapterHandle)
1012 /*
1013 * FUNCTION:
1014 * ARGUMENTS:
1015 * NOTES:
1016 * NDIS 5.0
1017 */
1018 {
1019 UNIMPLEMENTED
1020
1021 return (NDIS_HANDLE)NULL;
1022 }
1023
1024
1025 /*
1026 * @unimplemented
1027 */
1028 NDIS_STATUS
1029 EXPORT
1030 NdisIMInitializeDeviceInstanceEx(
1031 IN NDIS_HANDLE DriverHandle,
1032 IN PNDIS_STRING DriverInstance,
1033 IN NDIS_HANDLE DeviceContext OPTIONAL)
1034 /*
1035 * FUNCTION:
1036 * ARGUMENTS:
1037 * NOTES:
1038 * NDIS 5.0
1039 */
1040 {
1041 UNIMPLEMENTED
1042
1043 return NDIS_STATUS_FAILURE;
1044 }
1045
1046
1047
1048 VOID
1049 NTAPI
1050 ndisProcWorkItemHandler(PVOID pContext)
1051 {
1052 PNDIS_WORK_ITEM pNdisItem = (PNDIS_WORK_ITEM)pContext;
1053 pNdisItem->Routine(pNdisItem, pNdisItem->Context);
1054 }
1055
1056 EXPORT
1057 NDIS_STATUS
1058 NdisScheduleWorkItem(
1059 IN PNDIS_WORK_ITEM pWorkItem)
1060 {
1061 PWORK_QUEUE_ITEM pntWorkItem = (PWORK_QUEUE_ITEM)pWorkItem->WrapperReserved;
1062 ExInitializeWorkItem(pntWorkItem, ndisProcWorkItemHandler, pWorkItem);
1063 ExQueueWorkItem(pntWorkItem, CriticalWorkQueue);
1064 return NDIS_STATUS_SUCCESS;
1065 }