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
19 NdisCompleteQueryStatistics(
20 IN NDIS_HANDLE NdisAdapterHandle
,
21 IN PNDIS_REQUEST NdisRequest
,
22 IN NDIS_STATUS Status
)
33 NdisCompleteUnbindAdapter(
34 IN NDIS_HANDLE UnbindAdapterContext
,
35 IN NDIS_STATUS Status
)
41 #undef NdisInterlockedAddUlong
48 NdisInterlockedAddUlong (
51 IN PNDIS_SPIN_LOCK SpinLock
)
53 ExInterlockedAddUlong ( Addend
, Increment
, (PKSPIN_LOCK
)SpinLock
);
57 #undef NdisInterlockedInsertHeadList
64 NdisInterlockedInsertHeadList(
65 IN PLIST_ENTRY ListHead
,
66 IN PLIST_ENTRY ListEntry
,
67 IN PNDIS_SPIN_LOCK SpinLock
)
69 return ExInterlockedInsertHeadList ( ListHead
, ListEntry
, (PKSPIN_LOCK
)SpinLock
);
73 #undef NdisInterlockedInsertTailList
80 NdisInterlockedInsertTailList(
81 IN PLIST_ENTRY ListHead
,
82 IN PLIST_ENTRY ListEntry
,
83 IN PNDIS_SPIN_LOCK SpinLock
)
85 return ExInterlockedInsertTailList ( ListHead
, ListEntry
, (PKSPIN_LOCK
)SpinLock
);
89 #undef NdisInterlockedRemoveHeadList
96 NdisInterlockedRemoveHeadList(
97 IN PLIST_ENTRY ListHead
,
98 IN PNDIS_SPIN_LOCK SpinLock
)
100 return ExInterlockedRemoveHeadList ( ListHead
, (PKSPIN_LOCK
)SpinLock
);
110 OUT PNDIS_STATUS Status
,
111 OUT PVOID
* MappedBuffer
,
112 IN NDIS_HANDLE FileHandle
)
117 typedef struct _NDIS_HANDLE_OBJECT
123 } NDIS_HANDLE_OBJECT
, *PNDIS_HANDLE_OBJECT
;
127 NDIS_HANDLE_TO_POBJECT ( NDIS_HANDLE handle
)
129 return (PNDIS_HANDLE_OBJECT
)handle
;
134 NDIS_POBJECT_TO_HANDLE ( PNDIS_HANDLE_OBJECT obj
)
136 return (NDIS_HANDLE
)obj
;
139 const WCHAR
* NDIS_FILE_FOLDER
= L
"\\SystemRoot\\System32\\Drivers\\";
147 IN NDIS_HANDLE FileHandle
)
149 PNDIS_HANDLE_OBJECT FileHandleObject
;
151 ASSERT_IRQL(PASSIVE_LEVEL
);
153 ASSERT ( FileHandle
);
155 FileHandleObject
= NDIS_HANDLE_TO_POBJECT(FileHandle
);
157 ASSERT ( FileHandleObject
->FileHandle
);
160 if ( FileHandleObject->Mapped )
161 NdisUnmapFile ( FileHandle );
164 ZwClose ( FileHandleObject
->FileHandle
);
166 memset ( FileHandleObject
, 0, sizeof(NDIS_HANDLE_OBJECT
) );
168 ExFreePool ( FileHandleObject
);
177 NdisIMDeInitializeDeviceInstance(
178 IN NDIS_HANDLE NdisMiniportHandle
)
182 return NDIS_STATUS_FAILURE
;
186 #undef NdisIMInitializeDeviceInstance
193 NdisIMInitializeDeviceInstance(
194 IN NDIS_HANDLE DriverHandle
,
195 IN PNDIS_STRING DeviceInstance
)
199 return NDIS_STATUS_FAILURE
;
208 NdisIMRegisterLayeredMiniport(
209 IN NDIS_HANDLE NdisWrapperHandle
,
210 IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
,
211 IN UINT CharacteristicsLength
,
212 OUT PNDIS_HANDLE DriverHandle
)
216 return NDIS_STATUS_FAILURE
;
223 #undef NdisMWanIndicateReceive
226 NdisMWanIndicateReceive(
227 OUT PNDIS_STATUS Status
,
228 IN NDIS_HANDLE MiniportAdapterHandle
,
229 IN NDIS_HANDLE NdisLinkContext
,
230 IN PUCHAR PacketBuffer
,
240 #undef NdisMWanIndicateReceiveComplete
243 NdisMWanIndicateReceiveComplete(
244 IN NDIS_HANDLE MiniportAdapterHandle
)
253 #undef NdisMWanSendComplete
256 NdisMWanSendComplete(
257 IN NDIS_HANDLE MiniportAdapterHandle
,
258 IN PNDIS_WAN_PACKET Packet
,
259 IN NDIS_STATUS Status
)
271 OUT PNDIS_STATUS Status
,
272 OUT PNDIS_HANDLE FileHandle
,
273 OUT PUINT FileLength
,
274 IN PNDIS_STRING FileName
,
275 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
)
277 NDIS_STRING FullFileName
;
278 OBJECT_ATTRIBUTES ObjectAttributes
;
279 PNDIS_HANDLE_OBJECT FileHandleObject
= NULL
;
280 IO_STATUS_BLOCK IoStatusBlock
;
282 ASSERT_IRQL(PASSIVE_LEVEL
);
284 *Status
= NDIS_STATUS_SUCCESS
;
285 FullFileName
.Buffer
= NULL
;
287 ASSERT ( Status
&& FileName
);
289 FullFileName
.Length
= sizeof(NDIS_FILE_FOLDER
);
290 FullFileName
.MaximumLength
= FileName
->MaximumLength
+ sizeof(NDIS_FILE_FOLDER
);
291 FullFileName
.Buffer
= ExAllocatePool ( NonPagedPool
, FullFileName
.MaximumLength
);
293 if ( !FullFileName
.Buffer
)
295 *Status
= NDIS_STATUS_RESOURCES
;
299 FileHandleObject
= ExAllocatePool ( NonPagedPool
, sizeof(NDIS_HANDLE_OBJECT
) );
300 if ( !FileHandleObject
)
302 *Status
= NDIS_STATUS_RESOURCES
;
305 memset ( FileHandleObject
, 0, sizeof(NDIS_HANDLE_OBJECT
) );
307 memmove ( FullFileName
.Buffer
, NDIS_FILE_FOLDER
, FullFileName
.Length
);
308 *Status
= RtlAppendUnicodeStringToString ( &FullFileName
, FileName
);
309 if ( !NT_SUCCESS(*Status
) )
312 InitializeObjectAttributes ( &ObjectAttributes
,
314 OBJ_CASE_INSENSITIVE
,
318 *Status
= ZwCreateFile (
319 &FileHandleObject
->FileHandle
,
320 FILE_READ_DATA
|SYNCHRONIZE
,
323 NULL
, // PLARGE_INTEGER AllocationSize
324 0, // ULONG FileAttributes
325 FILE_SHARE_READ
, // ULONG ShareAccess
326 FILE_CREATE
, // ULONG CreateDisposition
327 FILE_SYNCHRONOUS_IO_NONALERT
, // ULONG CreateOptions
329 0 ); // ULONG EaLength
331 //if ( !NT_SUCCESS(*Status) )
335 if ( FullFileName
.Buffer
!= NULL
)
337 ExFreePool ( FullFileName
.Buffer
);
338 FullFileName
.Buffer
= NULL
;
340 if ( !NT_SUCCESS(*Status
) && FileHandleObject
!= NULL
)
342 ExFreePool ( FileHandleObject
);
343 FileHandleObject
= NULL
;
347 *FileHandle
= NDIS_POBJECT_TO_HANDLE(FileHandleObject
);
354 NdisOpenGlobalConfiguration
360 NdisRegisterTdiCallBack(
361 IN TDI_REGISTER_CALLBACK RegsterCallback
)
376 NdisSetProtocolFilter(
377 OUT PNDIS_STATUS Status
,
378 IN NDIS_HANDLE NdisBindingHandle
,
379 IN RECEIVE_HANDLER ReceiveHandler
,
380 IN RECEIVE_PACKET_HANDLER ReceivePacketHandler
,
381 IN NDIS_MEDIUM Medium
,
396 NdisSystemProcessorCount(
409 IN NDIS_HANDLE FileHandle
)
416 NdisUpcaseUnicodeString
417 NdisUpdateSharedMemory@4
422 NdisWriteEventLogEntry
427 /* NDIS 5.0 extensions */
434 NdisCompletePnPEvent(
435 IN NDIS_STATUS Status
,
436 IN NDIS_HANDLE NdisBindingHandle
,
437 IN PNET_PNP_EVENT NetPnPEvent
)
454 NdisConvertStringToAtmAddress(
455 OUT PNDIS_STATUS Status
,
456 IN PNDIS_STRING String
,
457 OUT PATM_ADDRESS AtmAddress
)
474 NdisGetCurrentProcessorCounts(
475 OUT PULONG pIdleCount
,
476 OUT PULONG pKernelAndUser
,
495 IN PNDIS_HANDLE NdisBindingHandle
,
496 OUT PNDIS_HANDLE NdisDriverHandle
)
513 NdisGetReceivedPacket(
514 IN PNDIS_HANDLE NdisBindingHandle
,
515 IN PNDIS_HANDLE MacContext
)
535 OUT PULONG pSystemUpTime
)
547 #undef NdisInterlockedDecrement
554 NdisInterlockedDecrement(
563 return InterlockedDecrement ( Addend
);
567 #undef NdisInterlockedIncrement
574 NdisInterlockedIncrement(
583 return InterlockedIncrement ( Addend
);
590 #undef NdisInterlockedPopEntrySList
593 NdisInterlockedPopEntrySList(
594 IN PSLIST_HEADER ListHead
,
603 return ExInterlockedPopEntrySList ( ListHead
, Lock
);
610 #undef NdisInterlockedPushEntrySList
613 NdisInterlockedPushEntrySList(
614 IN PSLIST_HEADER ListHead
,
615 IN PSINGLE_LIST_ENTRY ListEntry
,
624 return ExInterlockedPushEntrySList ( ListHead
, ListEntry
, Lock
);
633 NdisMDeregisterDevice(
634 IN NDIS_HANDLE NdisDeviceHandle
)
644 return NDIS_STATUS_FAILURE
;
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
)
676 NdisMInitializeScatterGatherDma(
677 IN NDIS_HANDLE MiniportAdapterHandle
,
678 IN BOOLEAN Dma64BitAddresses
,
679 IN ULONG MaximumPhysicalMapping
)
689 return NDIS_STATUS_FAILURE
;
698 NdisMPromoteMiniport(
699 IN NDIS_HANDLE MiniportAdapterHandle
)
709 return NDIS_STATUS_FAILURE
;
718 NdisMQueryAdapterInstanceName(
719 OUT PNDIS_STRING AdapterInstanceName
,
720 IN NDIS_HANDLE MiniportAdapterHandle
)
730 return NDIS_STATUS_FAILURE
;
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
)
755 return NDIS_STATUS_FAILURE
;
764 NdisMRegisterUnloadHandler(
765 IN NDIS_HANDLE NdisWrapperHandle
,
766 IN PDRIVER_UNLOAD UnloadHandler
)
784 IN NDIS_HANDLE MiniportAdapterHandle
)
794 return NDIS_STATUS_FAILURE
;
803 NdisMSetMiniportSecondary(
804 IN NDIS_HANDLE MiniportAdapterHandle
,
805 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
)
815 return NDIS_STATUS_FAILURE
;
825 NdisQueryAdapterInstanceName(
826 OUT PNDIS_STRING AdapterInstanceName
,
827 IN NDIS_HANDLE NdisBindingHandle
)
837 return NDIS_STATUS_FAILURE
;
846 NdisReadPcmciaAttributeMemory(
847 IN NDIS_HANDLE NdisAdapterHandle
,
869 NdisReleaseReadWriteLock(
870 IN PNDIS_RW_LOCK Lock
,
871 IN PLOCK_STATE LockState
)
887 NdisWritePcmciaAttributeMemory(
888 IN NDIS_HANDLE NdisAdapterHandle
,
905 /* NDIS 5.0 extensions for intermediate drivers */
912 NdisIMAssociateMiniport(
913 IN NDIS_HANDLE DriverHandle
,
914 IN NDIS_HANDLE ProtocolHandle
)
931 NdisIMCancelInitializeDeviceInstance(
932 IN NDIS_HANDLE DriverHandle
,
933 IN PNDIS_STRING DeviceInstance
)
943 return NDIS_STATUS_FAILURE
;
952 NdisIMCopySendCompletePerPacketInfo(
953 IN PNDIS_PACKET DstPacket
,
954 IN PNDIS_PACKET SrcPacket
)
971 NdisIMCopySendPerPacketInfo(
972 IN PNDIS_PACKET DstPacket
,
973 IN PNDIS_PACKET SrcPacket
)
990 NdisIMDeregisterLayeredMiniport(
991 IN NDIS_HANDLE DriverHandle
)
1008 NdisIMGetBindingContext(
1009 IN NDIS_HANDLE NdisBindingHandle
)
1019 return (NDIS_HANDLE
)NULL
;
1028 NdisIMGetDeviceContext(
1029 IN NDIS_HANDLE MiniportAdapterHandle
)
1039 return (NDIS_HANDLE
)NULL
;
1048 NdisIMInitializeDeviceInstanceEx(
1049 IN NDIS_HANDLE DriverHandle
,
1050 IN PNDIS_STRING DriverInstance
,
1051 IN NDIS_HANDLE DeviceContext OPTIONAL
)
1061 return NDIS_STATUS_FAILURE
;