2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/08-2000 Created
18 NdisCompleteQueryStatistics(
19 IN NDIS_HANDLE NdisAdapterHandle,
20 IN PNDIS_REQUEST NdisRequest,
21 IN NDIS_STATUS Status)
32 NdisCompleteUnbindAdapter(
33 IN NDIS_HANDLE UnbindAdapterContext,
34 IN NDIS_STATUS Status)
45 NdisInitializeListHead(
46 IN PLIST_ENTRY ListHead)
48 InitializeListHead(ListHead);
57 NdisInterlockedAddUlong (
60 IN PNDIS_SPIN_LOCK SpinLock)
62 ExInterlockedAddUlong ( Addend, Increment, (PKSPIN_LOCK)SpinLock );
71 NdisInterlockedInsertHeadList(
72 IN PLIST_ENTRY ListHead,
73 IN PLIST_ENTRY ListEntry,
74 IN PNDIS_SPIN_LOCK SpinLock)
76 return ExInterlockedInsertHeadList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
85 NdisInterlockedInsertTailList(
86 IN PLIST_ENTRY ListHead,
87 IN PLIST_ENTRY ListEntry,
88 IN PNDIS_SPIN_LOCK SpinLock)
90 return ExInterlockedInsertTailList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
99 NdisInterlockedRemoveHeadList(
100 IN PLIST_ENTRY ListHead,
101 IN PNDIS_SPIN_LOCK SpinLock)
103 return ExInterlockedRemoveHeadList ( ListHead, (PKSPIN_LOCK)SpinLock );
112 NdisMCompleteBufferPhysicalMapping(
113 IN NDIS_HANDLE MiniportAdapterHandle,
114 IN PNDIS_BUFFER Buffer,
115 IN ULONG PhysicalMapRegister)
125 NdisMStartBufferPhysicalMapping(
126 IN NDIS_HANDLE MiniportAdapterHandle,
127 IN PNDIS_BUFFER Buffer,
128 IN ULONG PhysicalMapRegister,
129 IN BOOLEAN WriteToDevice,
130 OUT PNDIS_PHYSICAL_ADDRESS_UNIT PhysicalAddressArray,
143 OUT PNDIS_STATUS Status,
144 OUT PVOID * MappedBuffer,
145 IN NDIS_HANDLE FileHandle)
150 typedef struct _NDIS_HANDLE_OBJECT
156 } NDIS_HANDLE_OBJECT, *PNDIS_HANDLE_OBJECT;
160 NDIS_HANDLE_TO_POBJECT ( NDIS_HANDLE handle )
162 return (PNDIS_HANDLE_OBJECT)handle;
167 NDIS_POBJECT_TO_HANDLE ( PNDIS_HANDLE_OBJECT obj )
169 return (NDIS_HANDLE)obj;
172 const WCHAR* NDIS_FILE_FOLDER = L"\\SystemRoot\\System32\\Drivers\\";
180 IN NDIS_HANDLE FileHandle)
182 PNDIS_HANDLE_OBJECT FileHandleObject;
184 ASSERT_IRQL(PASSIVE_LEVEL);
186 ASSERT ( FileHandle );
188 FileHandleObject = NDIS_HANDLE_TO_POBJECT(FileHandle);
190 ASSERT ( FileHandleObject->FileHandle );
193 if ( FileHandleObject->Mapped )
194 NdisUnmapFile ( FileHandle );
197 ZwClose ( FileHandleObject->FileHandle );
199 memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
201 ExFreePool ( FileHandleObject );
210 NdisIMDeInitializeDeviceInstance(
211 IN NDIS_HANDLE NdisMiniportHandle)
215 return NDIS_STATUS_FAILURE;
224 NdisIMInitializeDeviceInstance(
225 IN NDIS_HANDLE DriverHandle,
226 IN PNDIS_STRING DeviceInstance)
230 return NDIS_STATUS_FAILURE;
239 NdisIMRegisterLayeredMiniport(
240 IN NDIS_HANDLE NdisWrapperHandle,
241 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
242 IN UINT CharacteristicsLength,
243 OUT PNDIS_HANDLE DriverHandle)
247 return NDIS_STATUS_FAILURE;
256 NdisMWanIndicateReceive(
257 OUT PNDIS_STATUS Status,
258 IN NDIS_HANDLE MiniportAdapterHandle,
259 IN NDIS_HANDLE NdisLinkContext,
260 IN PUCHAR PacketBuffer,
272 NdisMWanIndicateReceiveComplete(
273 IN NDIS_HANDLE MiniportAdapterHandle)
284 NdisMWanSendComplete(
285 IN NDIS_HANDLE MiniportAdapterHandle,
286 IN PNDIS_WAN_PACKET Packet,
287 IN NDIS_STATUS Status)
299 OUT PNDIS_STATUS Status,
300 OUT PNDIS_HANDLE FileHandle,
301 OUT PUINT FileLength,
302 IN PNDIS_STRING FileName,
303 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
305 NDIS_STRING FullFileName;
306 OBJECT_ATTRIBUTES ObjectAttributes;
307 PNDIS_HANDLE_OBJECT FileHandleObject = NULL;
308 //IO_STATUS_BLOCK IoStatusBlock;
310 ASSERT_IRQL(PASSIVE_LEVEL);
312 *Status = NDIS_STATUS_SUCCESS;
313 FullFileName.Buffer = NULL;
315 ASSERT ( Status && FileName );
317 FullFileName.Length = sizeof(NDIS_FILE_FOLDER);
318 FullFileName.MaximumLength = FileName->MaximumLength + sizeof(NDIS_FILE_FOLDER);
319 FullFileName.Buffer = ExAllocatePool ( NonPagedPool, FullFileName.MaximumLength );
321 if ( !FullFileName.Buffer )
323 *Status = NDIS_STATUS_RESOURCES;
327 FileHandleObject = ExAllocatePool ( NonPagedPool, sizeof(NDIS_HANDLE_OBJECT) );
328 if ( !FileHandleObject )
330 *Status = NDIS_STATUS_RESOURCES;
333 memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
335 memmove ( FullFileName.Buffer, NDIS_FILE_FOLDER, FullFileName.Length );
336 *Status = RtlAppendUnicodeStringToString ( &FullFileName, FileName );
337 if ( !NT_SUCCESS(*Status) )
340 InitializeObjectAttributes ( &ObjectAttributes,
342 OBJ_CASE_INSENSITIVE,
346 *Status = ZwCreateFile (
347 &FileHandleObject->FileHandle,
348 FILE_READ_DATA|SYNCHRONIZE,
350 NULL, //&IoStatusBlock, // PIO_STATUS_BLOCK
351 NULL, // PLARGE_INTEGER AllocationSize
352 0, // ULONG FileAttributes
353 FILE_SHARE_READ, // ULONG ShareAccess
354 CREATE_NEW, // ULONG CreateDisposition
355 FILE_SYNCHRONOUS_IO_NONALERT, // ULONG CreateOptions
357 0 ); // ULONG EaLength
359 //if ( !NT_SUCCESS(*Status) )
363 if ( FullFileName.Buffer != NULL )
365 ExFreePool ( FullFileName.Buffer );
366 FullFileName.Buffer = NULL;
368 if ( !NT_SUCCESS(*Status) && FileHandleObject != NULL )
370 ExFreePool ( FileHandleObject );
371 FileHandleObject = NULL;
375 *FileHandle = NDIS_POBJECT_TO_HANDLE(FileHandleObject);
382 NdisOpenGlobalConfiguration
388 NdisRegisterTdiCallBack(
389 IN TDI_REGISTER_CALLBACK RegsterCallback)
404 NdisSetProtocolFilter(
405 OUT PNDIS_STATUS Status,
406 IN NDIS_HANDLE NdisBindingHandle,
407 IN RECEIVE_HANDLER ReceiveHandler,
408 IN RECEIVE_PACKET_HANDLER ReceivePacketHandler,
409 IN NDIS_MEDIUM Medium,
424 NdisSystemProcessorCount(
437 IN NDIS_HANDLE FileHandle)
444 NdisUpcaseUnicodeString
445 NdisUpdateSharedMemory@4
450 NdisWriteEventLogEntry
455 /* NDIS 5.0 extensions */
462 NdisCompletePnPEvent(
463 IN NDIS_STATUS Status,
464 IN NDIS_HANDLE NdisBindingHandle,
465 IN PNET_PNP_EVENT NetPnPEvent)
482 NdisConvertStringToAtmAddress(
483 OUT PNDIS_STATUS Status,
484 IN PNDIS_STRING String,
485 OUT PATM_ADDRESS AtmAddress)
502 NdisGetCurrentProcessorCounts(
503 OUT PULONG pIdleCount,
504 OUT PULONG pKernelAndUser,
523 IN PNDIS_HANDLE NdisBindingHandle,
524 OUT PNDIS_HANDLE NdisDriverHandle)
541 NdisGetReceivedPacket(
542 IN PNDIS_HANDLE NdisBindingHandle,
543 IN PNDIS_HANDLE MacContext)
563 OUT PULONG pSystemUpTime)
580 NdisInterlockedDecrement(
589 return InterlockedDecrement ( Addend );
598 NdisInterlockedIncrement(
607 return InterlockedIncrement ( Addend );
616 NdisInterlockedPopEntrySList(
617 IN PSLIST_HEADER ListHead,
626 return ExInterlockedPopEntrySList ( ListHead, Lock );
635 NdisInterlockedPushEntrySList(
636 IN PSLIST_HEADER ListHead,
637 IN PSINGLE_LIST_ENTRY ListEntry,
646 return ExInterlockedPushEntrySList ( ListHead, ListEntry, Lock );
655 NdisMDeregisterDevice(
656 IN NDIS_HANDLE NdisDeviceHandle)
666 return NDIS_STATUS_FAILURE;
675 NdisMGetDeviceProperty(
676 IN NDIS_HANDLE MiniportAdapterHandle,
677 IN OUT PDEVICE_OBJECT *PhysicalDeviceObject OPTIONAL,
678 IN OUT PDEVICE_OBJECT *FunctionalDeviceObject OPTIONAL,
679 IN OUT PDEVICE_OBJECT *NextDeviceObject OPTIONAL,
680 IN OUT PCM_RESOURCE_LIST *AllocatedResources OPTIONAL,
681 IN OUT PCM_RESOURCE_LIST *AllocatedResourcesTranslated OPTIONAL)
698 NdisMInitializeScatterGatherDma(
699 IN NDIS_HANDLE MiniportAdapterHandle,
700 IN BOOLEAN Dma64BitAddresses,
701 IN ULONG MaximumPhysicalMapping)
711 return NDIS_STATUS_FAILURE;
720 NdisMPromoteMiniport(
721 IN NDIS_HANDLE MiniportAdapterHandle)
731 return NDIS_STATUS_FAILURE;
740 NdisMQueryAdapterInstanceName(
741 OUT PNDIS_STRING AdapterInstanceName,
742 IN NDIS_HANDLE MiniportAdapterHandle)
752 return NDIS_STATUS_FAILURE;
762 IN NDIS_HANDLE NdisWrapperHandle,
763 IN PNDIS_STRING DeviceName,
764 IN PNDIS_STRING SymbolicName,
765 IN PDRIVER_DISPATCH MajorFunctions[],
766 OUT PDEVICE_OBJECT *pDeviceObject,
767 OUT NDIS_HANDLE *NdisDeviceHandle)
777 return NDIS_STATUS_FAILURE;
786 NdisMRegisterUnloadHandler(
787 IN NDIS_HANDLE NdisWrapperHandle,
788 IN PDRIVER_UNLOAD UnloadHandler)
806 IN NDIS_HANDLE MiniportAdapterHandle)
816 return NDIS_STATUS_FAILURE;
825 NdisMSetMiniportSecondary(
826 IN NDIS_HANDLE MiniportAdapterHandle,
827 IN NDIS_HANDLE PrimaryMiniportAdapterHandle)
837 return NDIS_STATUS_FAILURE;
847 NdisQueryAdapterInstanceName(
848 OUT PNDIS_STRING AdapterInstanceName,
849 IN NDIS_HANDLE NdisBindingHandle)
859 return NDIS_STATUS_FAILURE;
869 IN PNDIS_BUFFER Buffer,
870 OUT PVOID *VirtualAddress OPTIONAL,
889 NdisReadPcmciaAttributeMemory(
890 IN NDIS_HANDLE NdisAdapterHandle,
912 NdisReleaseReadWriteLock(
913 IN PNDIS_RW_LOCK Lock,
914 IN PLOCK_STATE LockState)
930 NdisWritePcmciaAttributeMemory(
931 IN NDIS_HANDLE NdisAdapterHandle,
948 /* NDIS 5.0 extensions for intermediate drivers */
955 NdisIMAssociateMiniport(
956 IN NDIS_HANDLE DriverHandle,
957 IN NDIS_HANDLE ProtocolHandle)
974 NdisIMCancelInitializeDeviceInstance(
975 IN NDIS_HANDLE DriverHandle,
976 IN PNDIS_STRING DeviceInstance)
986 return NDIS_STATUS_FAILURE;
995 NdisIMCopySendCompletePerPacketInfo(
996 IN PNDIS_PACKET DstPacket,
997 IN PNDIS_PACKET SrcPacket)
1014 NdisIMCopySendPerPacketInfo(
1015 IN PNDIS_PACKET DstPacket,
1016 IN PNDIS_PACKET SrcPacket)
1033 NdisIMDeregisterLayeredMiniport(
1034 IN NDIS_HANDLE DriverHandle)
1051 NdisIMGetBindingContext(
1052 IN NDIS_HANDLE NdisBindingHandle)
1062 return (NDIS_HANDLE)NULL;
1071 NdisIMGetDeviceContext(
1072 IN NDIS_HANDLE MiniportAdapterHandle)
1082 return (NDIS_HANDLE)NULL;
1091 NdisIMInitializeDeviceInstanceEx(
1092 IN NDIS_HANDLE DriverHandle,
1093 IN PNDIS_STRING DriverInstance,
1094 IN NDIS_HANDLE DeviceContext OPTIONAL)
1104 return NDIS_STATUS_FAILURE;