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
;
225 NdisMWanIndicateReceive(
226 OUT PNDIS_STATUS Status
,
227 IN NDIS_HANDLE MiniportAdapterHandle
,
228 IN NDIS_HANDLE NdisLinkContext
,
229 IN PUCHAR PacketBuffer
,
241 NdisMWanIndicateReceiveComplete(
242 IN NDIS_HANDLE MiniportAdapterHandle
)
253 NdisMWanSendComplete(
254 IN NDIS_HANDLE MiniportAdapterHandle
,
255 IN PNDIS_WAN_PACKET Packet
,
256 IN NDIS_STATUS Status
)
268 OUT PNDIS_STATUS Status
,
269 OUT PNDIS_HANDLE FileHandle
,
270 OUT PUINT FileLength
,
271 IN PNDIS_STRING FileName
,
272 IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
)
274 NDIS_STRING FullFileName
;
275 OBJECT_ATTRIBUTES ObjectAttributes
;
276 PNDIS_HANDLE_OBJECT FileHandleObject
= NULL
;
277 IO_STATUS_BLOCK IoStatusBlock
;
279 ASSERT_IRQL(PASSIVE_LEVEL
);
281 *Status
= NDIS_STATUS_SUCCESS
;
282 FullFileName
.Buffer
= NULL
;
284 ASSERT ( Status
&& FileName
);
286 FullFileName
.Length
= sizeof(NDIS_FILE_FOLDER
);
287 FullFileName
.MaximumLength
= FileName
->MaximumLength
+ sizeof(NDIS_FILE_FOLDER
);
288 FullFileName
.Buffer
= ExAllocatePool ( NonPagedPool
, FullFileName
.MaximumLength
);
290 if ( !FullFileName
.Buffer
)
292 *Status
= NDIS_STATUS_RESOURCES
;
296 FileHandleObject
= ExAllocatePool ( NonPagedPool
, sizeof(NDIS_HANDLE_OBJECT
) );
297 if ( !FileHandleObject
)
299 *Status
= NDIS_STATUS_RESOURCES
;
302 memset ( FileHandleObject
, 0, sizeof(NDIS_HANDLE_OBJECT
) );
304 memmove ( FullFileName
.Buffer
, NDIS_FILE_FOLDER
, FullFileName
.Length
);
305 *Status
= RtlAppendUnicodeStringToString ( &FullFileName
, FileName
);
306 if ( !NT_SUCCESS(*Status
) )
309 InitializeObjectAttributes ( &ObjectAttributes
,
311 OBJ_CASE_INSENSITIVE
,
315 *Status
= ZwCreateFile (
316 &FileHandleObject
->FileHandle
,
317 FILE_READ_DATA
|SYNCHRONIZE
,
320 NULL
, // PLARGE_INTEGER AllocationSize
321 0, // ULONG FileAttributes
322 FILE_SHARE_READ
, // ULONG ShareAccess
323 CREATE_NEW
, // ULONG CreateDisposition
324 FILE_SYNCHRONOUS_IO_NONALERT
, // ULONG CreateOptions
326 0 ); // ULONG EaLength
328 //if ( !NT_SUCCESS(*Status) )
332 if ( FullFileName
.Buffer
!= NULL
)
334 ExFreePool ( FullFileName
.Buffer
);
335 FullFileName
.Buffer
= NULL
;
337 if ( !NT_SUCCESS(*Status
) && FileHandleObject
!= NULL
)
339 ExFreePool ( FileHandleObject
);
340 FileHandleObject
= NULL
;
344 *FileHandle
= NDIS_POBJECT_TO_HANDLE(FileHandleObject
);
351 NdisOpenGlobalConfiguration
357 NdisRegisterTdiCallBack(
358 IN TDI_REGISTER_CALLBACK RegsterCallback
)
373 NdisSetProtocolFilter(
374 OUT PNDIS_STATUS Status
,
375 IN NDIS_HANDLE NdisBindingHandle
,
376 IN RECEIVE_HANDLER ReceiveHandler
,
377 IN RECEIVE_PACKET_HANDLER ReceivePacketHandler
,
378 IN NDIS_MEDIUM Medium
,
393 NdisSystemProcessorCount(
406 IN NDIS_HANDLE FileHandle
)
413 NdisUpcaseUnicodeString
414 NdisUpdateSharedMemory@4
419 NdisWriteEventLogEntry
424 /* NDIS 5.0 extensions */
431 NdisCompletePnPEvent(
432 IN NDIS_STATUS Status
,
433 IN NDIS_HANDLE NdisBindingHandle
,
434 IN PNET_PNP_EVENT NetPnPEvent
)
451 NdisConvertStringToAtmAddress(
452 OUT PNDIS_STATUS Status
,
453 IN PNDIS_STRING String
,
454 OUT PATM_ADDRESS AtmAddress
)
471 NdisGetCurrentProcessorCounts(
472 OUT PULONG pIdleCount
,
473 OUT PULONG pKernelAndUser
,
492 IN PNDIS_HANDLE NdisBindingHandle
,
493 OUT PNDIS_HANDLE NdisDriverHandle
)
510 NdisGetReceivedPacket(
511 IN PNDIS_HANDLE NdisBindingHandle
,
512 IN PNDIS_HANDLE MacContext
)
532 OUT PULONG pSystemUpTime
)
544 #undef NdisInterlockedDecrement
551 NdisInterlockedDecrement(
560 return InterlockedDecrement ( Addend
);
564 #undef NdisInterlockedIncrement
571 NdisInterlockedIncrement(
580 return InterlockedIncrement ( Addend
);
589 NdisInterlockedPopEntrySList(
590 IN PSLIST_HEADER ListHead
,
599 return ExInterlockedPopEntrySList ( ListHead
, Lock
);
608 NdisInterlockedPushEntrySList(
609 IN PSLIST_HEADER ListHead
,
610 IN PSINGLE_LIST_ENTRY ListEntry
,
619 return ExInterlockedPushEntrySList ( ListHead
, ListEntry
, Lock
);
628 NdisMDeregisterDevice(
629 IN NDIS_HANDLE NdisDeviceHandle
)
639 return NDIS_STATUS_FAILURE
;
648 NdisMGetDeviceProperty(
649 IN NDIS_HANDLE MiniportAdapterHandle
,
650 IN OUT PDEVICE_OBJECT
*PhysicalDeviceObject OPTIONAL
,
651 IN OUT PDEVICE_OBJECT
*FunctionalDeviceObject OPTIONAL
,
652 IN OUT PDEVICE_OBJECT
*NextDeviceObject OPTIONAL
,
653 IN OUT PCM_RESOURCE_LIST
*AllocatedResources OPTIONAL
,
654 IN OUT PCM_RESOURCE_LIST
*AllocatedResourcesTranslated OPTIONAL
)
671 NdisMInitializeScatterGatherDma(
672 IN NDIS_HANDLE MiniportAdapterHandle
,
673 IN BOOLEAN Dma64BitAddresses
,
674 IN ULONG MaximumPhysicalMapping
)
684 return NDIS_STATUS_FAILURE
;
693 NdisMPromoteMiniport(
694 IN NDIS_HANDLE MiniportAdapterHandle
)
704 return NDIS_STATUS_FAILURE
;
713 NdisMQueryAdapterInstanceName(
714 OUT PNDIS_STRING AdapterInstanceName
,
715 IN NDIS_HANDLE MiniportAdapterHandle
)
725 return NDIS_STATUS_FAILURE
;
735 IN NDIS_HANDLE NdisWrapperHandle
,
736 IN PNDIS_STRING DeviceName
,
737 IN PNDIS_STRING SymbolicName
,
738 IN PDRIVER_DISPATCH MajorFunctions
[],
739 OUT PDEVICE_OBJECT
*pDeviceObject
,
740 OUT NDIS_HANDLE
*NdisDeviceHandle
)
750 return NDIS_STATUS_FAILURE
;
759 NdisMRegisterUnloadHandler(
760 IN NDIS_HANDLE NdisWrapperHandle
,
761 IN PDRIVER_UNLOAD UnloadHandler
)
779 IN NDIS_HANDLE MiniportAdapterHandle
)
789 return NDIS_STATUS_FAILURE
;
798 NdisMSetMiniportSecondary(
799 IN NDIS_HANDLE MiniportAdapterHandle
,
800 IN NDIS_HANDLE PrimaryMiniportAdapterHandle
)
810 return NDIS_STATUS_FAILURE
;
820 NdisQueryAdapterInstanceName(
821 OUT PNDIS_STRING AdapterInstanceName
,
822 IN NDIS_HANDLE NdisBindingHandle
)
832 return NDIS_STATUS_FAILURE
;
841 NdisReadPcmciaAttributeMemory(
842 IN NDIS_HANDLE NdisAdapterHandle
,
864 NdisReleaseReadWriteLock(
865 IN PNDIS_RW_LOCK Lock
,
866 IN PLOCK_STATE LockState
)
882 NdisWritePcmciaAttributeMemory(
883 IN NDIS_HANDLE NdisAdapterHandle
,
900 /* NDIS 5.0 extensions for intermediate drivers */
907 NdisIMAssociateMiniport(
908 IN NDIS_HANDLE DriverHandle
,
909 IN NDIS_HANDLE ProtocolHandle
)
926 NdisIMCancelInitializeDeviceInstance(
927 IN NDIS_HANDLE DriverHandle
,
928 IN PNDIS_STRING DeviceInstance
)
938 return NDIS_STATUS_FAILURE
;
947 NdisIMCopySendCompletePerPacketInfo(
948 IN PNDIS_PACKET DstPacket
,
949 IN PNDIS_PACKET SrcPacket
)
966 NdisIMCopySendPerPacketInfo(
967 IN PNDIS_PACKET DstPacket
,
968 IN PNDIS_PACKET SrcPacket
)
985 NdisIMDeregisterLayeredMiniport(
986 IN NDIS_HANDLE DriverHandle
)
1003 NdisIMGetBindingContext(
1004 IN NDIS_HANDLE NdisBindingHandle
)
1014 return (NDIS_HANDLE
)NULL
;
1023 NdisIMGetDeviceContext(
1024 IN NDIS_HANDLE MiniportAdapterHandle
)
1034 return (NDIS_HANDLE
)NULL
;
1043 NdisIMInitializeDeviceInstanceEx(
1044 IN NDIS_HANDLE DriverHandle
,
1045 IN PNDIS_STRING DriverInstance
,
1046 IN NDIS_HANDLE DeviceContext OPTIONAL
)
1056 return NDIS_STATUS_FAILURE
;