mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
- Reorganize NDIS code
svn path=/trunk/; revision=40142
This commit is contained in:
parent
d162807f59
commit
d9e83ed22d
12 changed files with 732 additions and 732 deletions
|
@ -18,8 +18,9 @@
|
|||
<pch>ndissys.h</pch>
|
||||
</directory>
|
||||
<directory name="ndis">
|
||||
<file>40gone.c</file>
|
||||
<file>50gone.c</file>
|
||||
<file>30stubs.c</file>
|
||||
<file>40stubs.c</file>
|
||||
<file>50stubs.c</file>
|
||||
<file>buffer.c</file>
|
||||
<file>cl.c</file>
|
||||
<file>cm.c</file>
|
||||
|
@ -32,9 +33,9 @@
|
|||
<file>main.c</file>
|
||||
<file>memory.c</file>
|
||||
<file>miniport.c</file>
|
||||
<file>misc.c</file>
|
||||
<file>protocol.c</file>
|
||||
<file>string.c</file>
|
||||
<file>stubs.c</file>
|
||||
<file>time.c</file>
|
||||
</directory>
|
||||
<file>ndis.rc</file>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS NDIS library
|
||||
* FILE: ndis/40gone.c
|
||||
* PURPOSE: Obsoleted functions in NDIS 4.0
|
||||
* FILE: ndis/30stubs.c
|
||||
* PURPOSE: NDIS 3.0 Stubs
|
||||
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||
* REVISIONS:
|
||||
* CSH 01/08-2000 Created
|
||||
|
@ -102,27 +102,6 @@ NdisAllocateDmaChannel(
|
|||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisAllocateSharedMemory(
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Cached,
|
||||
OUT PVOID *VirtualAddress,
|
||||
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
|
||||
{
|
||||
NdisMAllocateSharedMemory(NdisAdapterHandle,
|
||||
Length,
|
||||
Cached,
|
||||
VirtualAddress,
|
||||
PhysicalAddress);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS NDIS library
|
||||
* FILE: ndis/50gone.c
|
||||
* PURPOSE: Obsoleted functions in NDIS 5.0
|
||||
* FILE: ndis/40stubs.c
|
||||
* PURPOSE: NDIS 4.0 stubs
|
||||
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||
* REVISIONS:
|
||||
* CSH 01/08-2000 Created
|
||||
|
@ -70,24 +70,6 @@ NdisDeregisterAdapter(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisDeregisterAdapterShutdownHandler(
|
||||
IN NDIS_HANDLE NdisAdapterHandle)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
NdisMDeregisterAdapterShutdownHandler(NdisAdapterHandle);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -125,32 +107,6 @@ NdisFreeDmaChannel(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisFreeSharedMemory(
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Cached,
|
||||
IN PVOID VirtualAddress,
|
||||
IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
NdisMFreeSharedMemory(NdisAdapterHandle,
|
||||
Length,
|
||||
Cached,
|
||||
VirtualAddress,
|
||||
PhysicalAddress);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -213,31 +169,6 @@ NdisIMSwitchToMiniport(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisMapIoSpace(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PVOID *VirtualAddress,
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
IN UINT Length)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
*Status = NdisMMapIoSpace(VirtualAddress,
|
||||
NdisAdapterHandle,
|
||||
PhysicalAddress,
|
||||
Length);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -330,28 +261,6 @@ NdisRegisterAdapter(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisRegisterAdapterShutdownHandler(
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN PVOID ShutdownContext,
|
||||
IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
NdisMRegisterAdapterShutdownHandler(NdisAdapterHandle,
|
||||
ShutdownContext,
|
||||
ShutdownHandler);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -414,4 +323,66 @@ NdisUpdateSharedMemory(
|
|||
/* No-op. */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisImmediateReadSharedMemory(
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
IN ULONG SharedMemoryAddress,
|
||||
OUT PUCHAR Buffer,
|
||||
IN ULONG Length)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisImmediateWriteSharedMemory(
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
IN ULONG SharedMemoryAddress,
|
||||
IN PUCHAR Buffer,
|
||||
IN ULONG Length)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisReadEisaSlotInformation(
|
||||
OUT PNDIS_STATUS Status,
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
OUT PUINT SlotNumber,
|
||||
OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisReadEisaSlotInformationEx(
|
||||
OUT PNDIS_STATUS Status,
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
OUT PUINT SlotNumber,
|
||||
OUT PNDIS_EISA_FUNCTION_INFORMATION *EisaData,
|
||||
OUT PUINT NumberOfFunctions)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
/* EOF */
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS NDIS library
|
||||
* FILE: ndis/stubs.c
|
||||
* PURPOSE: Stubs
|
||||
* FILE: ndis/50stubs.c
|
||||
* PURPOSE: NDIS 5.0 Stubs
|
||||
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||
* REVISIONS:
|
||||
* CSH 01/08-2000 Created
|
||||
|
@ -24,147 +24,6 @@ NdisCompleteQueryStatistics(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedAddUlong
|
||||
VOID
|
||||
EXPORT
|
||||
NdisInterlockedAddUlong (
|
||||
IN PULONG Addend,
|
||||
IN ULONG Increment,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
ExInterlockedAddUlong ( Addend, Increment, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedInsertHeadList
|
||||
PLIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedInsertHeadList(
|
||||
IN PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY ListEntry,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
return ExInterlockedInsertHeadList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedInsertTailList
|
||||
PLIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedInsertTailList(
|
||||
IN PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY ListEntry,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
return ExInterlockedInsertTailList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedRemoveHeadList
|
||||
PLIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedRemoveHeadList(
|
||||
IN PLIST_ENTRY ListHead,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
return ExInterlockedRemoveHeadList ( ListHead, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
typedef struct _NDIS_HANDLE_OBJECT
|
||||
{
|
||||
HANDLE FileHandle;
|
||||
BOOLEAN Mapped;
|
||||
ULONG FileLength;
|
||||
PVOID MapBuffer;
|
||||
} NDIS_HANDLE_OBJECT, *PNDIS_HANDLE_OBJECT;
|
||||
|
||||
__inline
|
||||
PNDIS_HANDLE_OBJECT
|
||||
NDIS_HANDLE_TO_POBJECT ( NDIS_HANDLE handle )
|
||||
{
|
||||
return (PNDIS_HANDLE_OBJECT)handle;
|
||||
}
|
||||
|
||||
__inline
|
||||
NDIS_HANDLE
|
||||
NDIS_POBJECT_TO_HANDLE ( PNDIS_HANDLE_OBJECT obj )
|
||||
{
|
||||
return (NDIS_HANDLE)obj;
|
||||
}
|
||||
|
||||
const WCHAR* NDIS_FILE_FOLDER = L"\\SystemRoot\\System32\\Drivers\\";
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisMapFile(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PVOID *MappedBuffer,
|
||||
IN NDIS_HANDLE FileHandle)
|
||||
{
|
||||
PNDIS_HANDLE_OBJECT HandleObject = (PNDIS_HANDLE_OBJECT) FileHandle;
|
||||
|
||||
NDIS_DbgPrint(MAX_TRACE, ("called: FileHandle 0x%x\n", FileHandle));
|
||||
|
||||
if (HandleObject->Mapped)
|
||||
{
|
||||
/* If a file already mapped we will return an error code */
|
||||
*Status = NDIS_STATUS_ALREADY_MAPPED;
|
||||
return;
|
||||
}
|
||||
|
||||
HandleObject->Mapped = TRUE;
|
||||
*MappedBuffer = HandleObject->MapBuffer;
|
||||
|
||||
/* Set returned status */
|
||||
*Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisCloseFile(
|
||||
IN NDIS_HANDLE FileHandle)
|
||||
{
|
||||
PNDIS_HANDLE_OBJECT FileHandleObject;
|
||||
|
||||
ASSERT_IRQL(PASSIVE_LEVEL);
|
||||
|
||||
ASSERT ( FileHandle );
|
||||
|
||||
FileHandleObject = NDIS_HANDLE_TO_POBJECT(FileHandle);
|
||||
|
||||
ASSERT ( FileHandleObject->FileHandle );
|
||||
|
||||
/*
|
||||
if ( FileHandleObject->Mapped )
|
||||
NdisUnmapFile ( FileHandle );
|
||||
*/
|
||||
|
||||
ZwClose ( FileHandleObject->FileHandle );
|
||||
|
||||
memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
|
||||
|
||||
ExFreePool ( FileHandleObject );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -257,101 +116,6 @@ NdisMWanSendComplete(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisOpenFile(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PNDIS_HANDLE FileHandle,
|
||||
OUT PUINT FileLength,
|
||||
IN PNDIS_STRING FileName,
|
||||
IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
|
||||
{
|
||||
NDIS_STRING FullFileName;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
PNDIS_HANDLE_OBJECT FileHandleObject = NULL;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
|
||||
ASSERT_IRQL(PASSIVE_LEVEL);
|
||||
|
||||
*Status = NDIS_STATUS_SUCCESS;
|
||||
FullFileName.Buffer = NULL;
|
||||
|
||||
ASSERT ( Status && FileName );
|
||||
|
||||
FullFileName.Length = sizeof(NDIS_FILE_FOLDER);
|
||||
FullFileName.MaximumLength = FileName->MaximumLength + sizeof(NDIS_FILE_FOLDER);
|
||||
FullFileName.Buffer = ExAllocatePool ( NonPagedPool, FullFileName.MaximumLength );
|
||||
|
||||
if ( !FullFileName.Buffer )
|
||||
{
|
||||
*Status = NDIS_STATUS_RESOURCES;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
FileHandleObject = ExAllocatePool ( NonPagedPool, sizeof(NDIS_HANDLE_OBJECT) );
|
||||
if ( !FileHandleObject )
|
||||
{
|
||||
*Status = NDIS_STATUS_RESOURCES;
|
||||
goto cleanup;
|
||||
}
|
||||
memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
|
||||
|
||||
memmove ( FullFileName.Buffer, NDIS_FILE_FOLDER, FullFileName.Length );
|
||||
*Status = RtlAppendUnicodeStringToString ( &FullFileName, FileName );
|
||||
if ( !NT_SUCCESS(*Status) )
|
||||
{
|
||||
*Status = NDIS_STATUS_FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
InitializeObjectAttributes ( &ObjectAttributes,
|
||||
&FullFileName,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
NULL,
|
||||
NULL );
|
||||
|
||||
*Status = ZwCreateFile (
|
||||
&FileHandleObject->FileHandle,
|
||||
FILE_READ_DATA|SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
NULL, // PLARGE_INTEGER AllocationSize
|
||||
0, // ULONG FileAttributes
|
||||
FILE_SHARE_READ, // ULONG ShareAccess
|
||||
FILE_CREATE, // ULONG CreateDisposition
|
||||
FILE_SYNCHRONOUS_IO_NONALERT, // ULONG CreateOptions
|
||||
0, // PVOID EaBuffer
|
||||
0 ); // ULONG EaLength
|
||||
|
||||
if ( !NT_SUCCESS(*Status) )
|
||||
{
|
||||
*Status = NDIS_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if ( FullFileName.Buffer != NULL )
|
||||
{
|
||||
ExFreePool ( FullFileName.Buffer );
|
||||
FullFileName.Buffer = NULL;
|
||||
}
|
||||
if ( !NT_SUCCESS(*Status) )
|
||||
{
|
||||
if( FileHandleObject ) {
|
||||
ExFreePool ( FileHandleObject );
|
||||
FileHandleObject = NULL;
|
||||
}
|
||||
*FileHandle = NULL;
|
||||
}
|
||||
else
|
||||
*FileHandle = NDIS_POBJECT_TO_HANDLE(FileHandleObject);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
NdisOpenGlobalConfiguration
|
||||
*/
|
||||
|
@ -390,32 +154,6 @@ NdisSetProtocolFilter(
|
|||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
CCHAR
|
||||
EXPORT
|
||||
NdisSystemProcessorCount(
|
||||
VOID)
|
||||
{
|
||||
return (CCHAR)KeNumberProcessors;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisUnmapFile(
|
||||
IN NDIS_HANDLE FileHandle)
|
||||
{
|
||||
PNDIS_HANDLE_OBJECT HandleObject = (PNDIS_HANDLE_OBJECT) FileHandle;
|
||||
|
||||
HandleObject->Mapped = FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
NdisUpcaseUnicodeString
|
||||
NdisUpdateSharedMemory@4
|
||||
|
@ -427,9 +165,6 @@ NdisWriteEventLogEntry
|
|||
*/
|
||||
|
||||
|
||||
|
||||
/* NDIS 5.0 extensions */
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -470,53 +205,6 @@ NdisConvertStringToAtmAddress(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetCurrentProcessorCounts(
|
||||
OUT PULONG pIdleCount,
|
||||
OUT PULONG pKernelAndUser,
|
||||
OUT PULONG pIndex)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
ExGetCurrentProcessorCounts( (PULONG) pIdleCount, (PULONG) pKernelAndUser, (PULONG) pIndex);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetDriverHandle(
|
||||
IN PNDIS_HANDLE NdisBindingHandle,
|
||||
OUT PNDIS_HANDLE NdisDriverHandle)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
PADAPTER_BINDING Binding = (PADAPTER_BINDING)NdisBindingHandle;
|
||||
|
||||
if (!Binding)
|
||||
{
|
||||
*NdisDriverHandle = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
*NdisDriverHandle = Binding->Adapter->NdisMiniportBlock.DriverHandle;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -538,106 +226,6 @@ NdisGetReceivedPacket(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetSystemUpTime(OUT PULONG pSystemUpTime)
|
||||
{
|
||||
ULONG Increment;
|
||||
LARGE_INTEGER TickCount;
|
||||
|
||||
/* Get the increment and current tick count */
|
||||
Increment = KeQueryTimeIncrement();
|
||||
KeQueryTickCount(&TickCount);
|
||||
|
||||
/* Convert to milliseconds and return */
|
||||
TickCount.QuadPart *= Increment;
|
||||
TickCount.QuadPart /= (10 * 1000);
|
||||
*pSystemUpTime = TickCount.LowPart;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedDecrement
|
||||
LONG
|
||||
EXPORT
|
||||
NdisInterlockedDecrement(
|
||||
IN PLONG Addend)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return InterlockedDecrement ( Addend );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedIncrement
|
||||
LONG
|
||||
EXPORT
|
||||
NdisInterlockedIncrement(
|
||||
IN PLONG Addend)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return InterlockedIncrement ( Addend );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedPopEntrySList
|
||||
PSINGLE_LIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedPopEntrySList(
|
||||
IN PSLIST_HEADER ListHead,
|
||||
IN PKSPIN_LOCK Lock)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return ExInterlockedPopEntrySList ( ListHead, Lock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedPushEntrySList
|
||||
PSINGLE_LIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedPushEntrySList(
|
||||
IN PSLIST_HEADER ListHead,
|
||||
IN PSINGLE_LIST_ENTRY ListEntry,
|
||||
IN PKSPIN_LOCK Lock)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return ExInterlockedPushEntrySList ( ListHead, ListEntry, Lock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -854,8 +442,6 @@ NdisWritePcmciaAttributeMemory(
|
|||
}
|
||||
|
||||
|
||||
/* NDIS 5.0 extensions for intermediate drivers */
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
@ -1014,22 +600,123 @@ NdisIMInitializeDeviceInstanceEx(
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
ndisProcWorkItemHandler(PVOID pContext)
|
||||
EXPORT
|
||||
NdisReturnPackets(
|
||||
IN PNDIS_PACKET *PacketsToReturn,
|
||||
IN UINT NumberOfPackets)
|
||||
/*
|
||||
* FUNCTION: Releases ownership of one or more packets
|
||||
* ARGUMENTS:
|
||||
* PacketsToReturn = Pointer to an array of pointers to packet descriptors
|
||||
* NumberOfPackets = Number of pointers in descriptor pointer array
|
||||
*/
|
||||
{
|
||||
PNDIS_WORK_ITEM pNdisItem = (PNDIS_WORK_ITEM)pContext;
|
||||
pNdisItem->Routine(pNdisItem, pNdisItem->Context);
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
UINT
|
||||
EXPORT
|
||||
NDIS_STATUS
|
||||
NdisScheduleWorkItem(
|
||||
IN PNDIS_WORK_ITEM pWorkItem)
|
||||
NdisPacketPoolUsage(
|
||||
IN NDIS_HANDLE PoolHandle)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
PWORK_QUEUE_ITEM pntWorkItem = (PWORK_QUEUE_ITEM)pWorkItem->WrapperReserved;
|
||||
ExInitializeWorkItem(pntWorkItem, ndisProcWorkItemHandler, pWorkItem);
|
||||
ExQueueWorkItem(pntWorkItem, CriticalWorkQueue);
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisMDeregisterIoPortRange(
|
||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
||||
IN UINT InitialPort,
|
||||
IN UINT NumberOfPorts,
|
||||
IN PVOID PortOffset)
|
||||
/*
|
||||
* FUNCTION: Releases a register mapping to I/O ports
|
||||
* ARGUMENTS:
|
||||
* MiniportAdapterHandle = Specifies handle input to MiniportInitialize
|
||||
* InitialPort = Bus-relative base port address of a range to be mapped
|
||||
* NumberOfPorts = Specifies number of ports to be mapped
|
||||
* PortOffset = Pointer to mapped base port address
|
||||
*/
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NDIS_STATUS
|
||||
EXPORT
|
||||
NdisMAllocateSharedMemoryAsync(
|
||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Cached,
|
||||
IN PVOID Context)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return NDIS_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisCopyBuffer(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PNDIS_BUFFER *Buffer,
|
||||
IN NDIS_HANDLE PoolHandle,
|
||||
IN PVOID MemoryDescriptor,
|
||||
IN UINT Offset,
|
||||
IN UINT Length)
|
||||
/*
|
||||
* FUNCTION: Returns a new buffer descriptor for a (partial) buffer
|
||||
* ARGUMENTS:
|
||||
* Status = Address of a buffer to place status of operation
|
||||
* Buffer = Address of a buffer to place new buffer descriptor
|
||||
* PoolHandle = Handle returned by NdisAllocateBufferPool
|
||||
* MemoryDescriptor = Pointer to a memory descriptor (possibly NDIS_BUFFER)
|
||||
* Offset = Offset in buffer to start copying
|
||||
* Length = Number of bytes to copy
|
||||
*/
|
||||
{
|
||||
*Status = NDIS_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetCurrentProcessorCpuUsage(
|
||||
PULONG pCpuUsage)
|
||||
/*
|
||||
* FUNCTION: Returns how busy the current processor is as a percentage
|
||||
* ARGUMENTS:
|
||||
* pCpuUsage = Pointer to a buffer to place CPU usage
|
||||
*/
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
|
@ -581,33 +581,6 @@ NdisBufferVirtualAddress(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisCopyBuffer(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PNDIS_BUFFER *Buffer,
|
||||
IN NDIS_HANDLE PoolHandle,
|
||||
IN PVOID MemoryDescriptor,
|
||||
IN UINT Offset,
|
||||
IN UINT Length)
|
||||
/*
|
||||
* FUNCTION: Returns a new buffer descriptor for a (partial) buffer
|
||||
* ARGUMENTS:
|
||||
* Status = Address of a buffer to place status of operation
|
||||
* Buffer = Address of a buffer to place new buffer descriptor
|
||||
* PoolHandle = Handle returned by NdisAllocateBufferPool
|
||||
* MemoryDescriptor = Pointer to a memory descriptor (possibly NDIS_BUFFER)
|
||||
* Offset = Offset in buffer to start copying
|
||||
* Length = Number of bytes to copy
|
||||
*/
|
||||
{
|
||||
*Status = NDIS_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -975,45 +948,6 @@ NdisGetFirstBufferFromPacket(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisReturnPackets(
|
||||
IN PNDIS_PACKET *PacketsToReturn,
|
||||
IN UINT NumberOfPackets)
|
||||
/*
|
||||
* FUNCTION: Releases ownership of one or more packets
|
||||
* ARGUMENTS:
|
||||
* PacketsToReturn = Pointer to an array of pointers to packet descriptors
|
||||
* NumberOfPackets = Number of pointers in descriptor pointer array
|
||||
*/
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
UINT
|
||||
EXPORT
|
||||
NdisPacketPoolUsage(
|
||||
IN NDIS_HANDLE PoolHandle)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
|
|
@ -218,23 +218,6 @@ NdisFreeSpinLock(
|
|||
/* Nothing to do here! */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetCurrentProcessorCpuUsage(
|
||||
PULONG pCpuUsage)
|
||||
/*
|
||||
* FUNCTION: Returns how busy the current processor is as a percentage
|
||||
* ARGUMENTS:
|
||||
* pCpuUsage = Pointer to a buffer to place CPU usage
|
||||
*/
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
|
|
|
@ -152,37 +152,6 @@ NdisQueryMapRegisterCount(
|
|||
return NDIS_STATUS_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisReadEisaSlotInformation(
|
||||
OUT PNDIS_STATUS Status,
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
OUT PUINT SlotNumber,
|
||||
OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisReadEisaSlotInformationEx(
|
||||
OUT PNDIS_STATUS Status,
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
OUT PUINT SlotNumber,
|
||||
OUT PNDIS_EISA_FUNCTION_INFORMATION *EisaData,
|
||||
OUT PUINT NumberOfFunctions)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
|
|
|
@ -525,29 +525,6 @@ NdisMDeregisterInterrupt(
|
|||
Interrupt->Miniport->Interrupt = NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisMDeregisterIoPortRange(
|
||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
||||
IN UINT InitialPort,
|
||||
IN UINT NumberOfPorts,
|
||||
IN PVOID PortOffset)
|
||||
/*
|
||||
* FUNCTION: Releases a register mapping to I/O ports
|
||||
* ARGUMENTS:
|
||||
* MiniportAdapterHandle = Specifies handle input to MiniportInitialize
|
||||
* InitialPort = Bus-relative base port address of a range to be mapped
|
||||
* NumberOfPorts = Specifies number of ports to be mapped
|
||||
* PortOffset = Pointer to mapped base port address
|
||||
*/
|
||||
{
|
||||
NDIS_DbgPrint(MAX_TRACE, ("called - IMPLEMENT ME.\n"));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
|
@ -971,5 +948,31 @@ NdisMInitializeScatterGatherDma(
|
|||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisMapIoSpace(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PVOID *VirtualAddress,
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN NDIS_PHYSICAL_ADDRESS PhysicalAddress,
|
||||
IN UINT Length)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
*Status = NdisMMapIoSpace(VirtualAddress,
|
||||
NdisAdapterHandle,
|
||||
PhysicalAddress,
|
||||
Length);
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
||||
|
|
|
@ -135,36 +135,6 @@ NdisFreeMemory(
|
|||
ExFreePool(VirtualAddress);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisImmediateReadSharedMemory(
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
IN ULONG SharedMemoryAddress,
|
||||
OUT PUCHAR Buffer,
|
||||
IN ULONG Length)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisImmediateWriteSharedMemory(
|
||||
IN NDIS_HANDLE WrapperConfigurationContext,
|
||||
IN ULONG SharedMemoryAddress,
|
||||
IN PUCHAR Buffer,
|
||||
IN ULONG Length)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
|
@ -197,24 +167,6 @@ NdisMAllocateSharedMemory(
|
|||
Adapter->NdisMiniportBlock.SystemAdapterObject, Length, PhysicalAddress, Cached);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NDIS_STATUS
|
||||
EXPORT
|
||||
NdisMAllocateSharedMemoryAsync(
|
||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Cached,
|
||||
IN PVOID Context)
|
||||
{
|
||||
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
|
||||
UNIMPLEMENTED
|
||||
|
||||
return NDIS_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
|
@ -293,5 +245,52 @@ NdisMFreeSharedMemory(
|
|||
ZwClose(ThreadHandle);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisAllocateSharedMemory(
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Cached,
|
||||
OUT PVOID *VirtualAddress,
|
||||
OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
|
||||
{
|
||||
NdisMAllocateSharedMemory(NdisAdapterHandle,
|
||||
Length,
|
||||
Cached,
|
||||
VirtualAddress,
|
||||
PhysicalAddress);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisFreeSharedMemory(
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Cached,
|
||||
IN PVOID VirtualAddress,
|
||||
IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
NdisMFreeSharedMemory(NdisAdapterHandle,
|
||||
Length,
|
||||
Cached,
|
||||
VirtualAddress,
|
||||
PhysicalAddress);
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
||||
|
|
|
@ -2491,5 +2491,44 @@ NdisMQueryAdapterInstanceName(
|
|||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisDeregisterAdapterShutdownHandler(
|
||||
IN NDIS_HANDLE NdisAdapterHandle)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
NdisMDeregisterAdapterShutdownHandler(NdisAdapterHandle);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisRegisterAdapterShutdownHandler(
|
||||
IN NDIS_HANDLE NdisAdapterHandle,
|
||||
IN PVOID ShutdownContext,
|
||||
IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 4.0
|
||||
*/
|
||||
{
|
||||
NdisMRegisterAdapterShutdownHandler(NdisAdapterHandle,
|
||||
ShutdownContext,
|
||||
ShutdownHandler);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
||||
|
|
408
reactos/drivers/network/ndis/ndis/misc.c
Normal file
408
reactos/drivers/network/ndis/ndis/misc.c
Normal file
|
@ -0,0 +1,408 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS NDIS library
|
||||
* FILE: ndis/misc.c
|
||||
*/
|
||||
|
||||
#include "ndissys.h"
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedAddUlong
|
||||
VOID
|
||||
EXPORT
|
||||
NdisInterlockedAddUlong (
|
||||
IN PULONG Addend,
|
||||
IN ULONG Increment,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
ExInterlockedAddUlong ( Addend, Increment, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedInsertHeadList
|
||||
PLIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedInsertHeadList(
|
||||
IN PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY ListEntry,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
return ExInterlockedInsertHeadList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedInsertTailList
|
||||
PLIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedInsertTailList(
|
||||
IN PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY ListEntry,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
return ExInterlockedInsertTailList ( ListHead, ListEntry, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedRemoveHeadList
|
||||
PLIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedRemoveHeadList(
|
||||
IN PLIST_ENTRY ListHead,
|
||||
IN PNDIS_SPIN_LOCK SpinLock)
|
||||
{
|
||||
return ExInterlockedRemoveHeadList ( ListHead, (PKSPIN_LOCK)SpinLock );
|
||||
}
|
||||
|
||||
typedef struct _NDIS_HANDLE_OBJECT
|
||||
{
|
||||
HANDLE FileHandle;
|
||||
BOOLEAN Mapped;
|
||||
ULONG FileLength;
|
||||
PVOID MapBuffer;
|
||||
} NDIS_HANDLE_OBJECT, *PNDIS_HANDLE_OBJECT;
|
||||
|
||||
__inline
|
||||
PNDIS_HANDLE_OBJECT
|
||||
NDIS_HANDLE_TO_POBJECT ( NDIS_HANDLE handle )
|
||||
{
|
||||
return (PNDIS_HANDLE_OBJECT)handle;
|
||||
}
|
||||
|
||||
__inline
|
||||
NDIS_HANDLE
|
||||
NDIS_POBJECT_TO_HANDLE ( PNDIS_HANDLE_OBJECT obj )
|
||||
{
|
||||
return (NDIS_HANDLE)obj;
|
||||
}
|
||||
|
||||
const WCHAR* NDIS_FILE_FOLDER = L"\\SystemRoot\\System32\\Drivers\\";
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisMapFile(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PVOID *MappedBuffer,
|
||||
IN NDIS_HANDLE FileHandle)
|
||||
{
|
||||
PNDIS_HANDLE_OBJECT HandleObject = (PNDIS_HANDLE_OBJECT) FileHandle;
|
||||
|
||||
NDIS_DbgPrint(MAX_TRACE, ("called: FileHandle 0x%x\n", FileHandle));
|
||||
|
||||
if (HandleObject->Mapped)
|
||||
{
|
||||
/* If a file already mapped we will return an error code */
|
||||
*Status = NDIS_STATUS_ALREADY_MAPPED;
|
||||
return;
|
||||
}
|
||||
|
||||
HandleObject->Mapped = TRUE;
|
||||
*MappedBuffer = HandleObject->MapBuffer;
|
||||
|
||||
/* Set returned status */
|
||||
*Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisCloseFile(
|
||||
IN NDIS_HANDLE FileHandle)
|
||||
{
|
||||
PNDIS_HANDLE_OBJECT FileHandleObject;
|
||||
|
||||
ASSERT_IRQL(PASSIVE_LEVEL);
|
||||
|
||||
ASSERT ( FileHandle );
|
||||
|
||||
FileHandleObject = NDIS_HANDLE_TO_POBJECT(FileHandle);
|
||||
|
||||
ASSERT ( FileHandleObject->FileHandle );
|
||||
|
||||
/*
|
||||
if ( FileHandleObject->Mapped )
|
||||
NdisUnmapFile ( FileHandle );
|
||||
*/
|
||||
|
||||
ZwClose ( FileHandleObject->FileHandle );
|
||||
|
||||
memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
|
||||
|
||||
ExFreePool ( FileHandleObject );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisOpenFile(
|
||||
OUT PNDIS_STATUS Status,
|
||||
OUT PNDIS_HANDLE FileHandle,
|
||||
OUT PUINT FileLength,
|
||||
IN PNDIS_STRING FileName,
|
||||
IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
|
||||
{
|
||||
NDIS_STRING FullFileName;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
PNDIS_HANDLE_OBJECT FileHandleObject = NULL;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
|
||||
ASSERT_IRQL(PASSIVE_LEVEL);
|
||||
|
||||
*Status = NDIS_STATUS_SUCCESS;
|
||||
FullFileName.Buffer = NULL;
|
||||
|
||||
ASSERT ( Status && FileName );
|
||||
|
||||
FullFileName.Length = sizeof(NDIS_FILE_FOLDER);
|
||||
FullFileName.MaximumLength = FileName->MaximumLength + sizeof(NDIS_FILE_FOLDER);
|
||||
FullFileName.Buffer = ExAllocatePool ( NonPagedPool, FullFileName.MaximumLength );
|
||||
|
||||
if ( !FullFileName.Buffer )
|
||||
{
|
||||
*Status = NDIS_STATUS_RESOURCES;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
FileHandleObject = ExAllocatePool ( NonPagedPool, sizeof(NDIS_HANDLE_OBJECT) );
|
||||
if ( !FileHandleObject )
|
||||
{
|
||||
*Status = NDIS_STATUS_RESOURCES;
|
||||
goto cleanup;
|
||||
}
|
||||
memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
|
||||
|
||||
memmove ( FullFileName.Buffer, NDIS_FILE_FOLDER, FullFileName.Length );
|
||||
*Status = RtlAppendUnicodeStringToString ( &FullFileName, FileName );
|
||||
if ( !NT_SUCCESS(*Status) )
|
||||
{
|
||||
*Status = NDIS_STATUS_FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
InitializeObjectAttributes ( &ObjectAttributes,
|
||||
&FullFileName,
|
||||
OBJ_CASE_INSENSITIVE,
|
||||
NULL,
|
||||
NULL );
|
||||
|
||||
*Status = ZwCreateFile (
|
||||
&FileHandleObject->FileHandle,
|
||||
FILE_READ_DATA|SYNCHRONIZE,
|
||||
&ObjectAttributes,
|
||||
&IoStatusBlock,
|
||||
NULL, // PLARGE_INTEGER AllocationSize
|
||||
0, // ULONG FileAttributes
|
||||
FILE_SHARE_READ, // ULONG ShareAccess
|
||||
FILE_CREATE, // ULONG CreateDisposition
|
||||
FILE_SYNCHRONOUS_IO_NONALERT, // ULONG CreateOptions
|
||||
0, // PVOID EaBuffer
|
||||
0 ); // ULONG EaLength
|
||||
|
||||
if ( !NT_SUCCESS(*Status) )
|
||||
{
|
||||
*Status = NDIS_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if ( FullFileName.Buffer != NULL )
|
||||
{
|
||||
ExFreePool ( FullFileName.Buffer );
|
||||
FullFileName.Buffer = NULL;
|
||||
}
|
||||
if ( !NT_SUCCESS(*Status) )
|
||||
{
|
||||
if( FileHandleObject ) {
|
||||
ExFreePool ( FileHandleObject );
|
||||
FileHandleObject = NULL;
|
||||
}
|
||||
*FileHandle = NULL;
|
||||
}
|
||||
else
|
||||
*FileHandle = NDIS_POBJECT_TO_HANDLE(FileHandleObject);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
CCHAR
|
||||
EXPORT
|
||||
NdisSystemProcessorCount(
|
||||
VOID)
|
||||
{
|
||||
return (CCHAR)KeNumberProcessors;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisUnmapFile(
|
||||
IN NDIS_HANDLE FileHandle)
|
||||
{
|
||||
PNDIS_HANDLE_OBJECT HandleObject = (PNDIS_HANDLE_OBJECT) FileHandle;
|
||||
|
||||
HandleObject->Mapped = FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetCurrentProcessorCounts(
|
||||
OUT PULONG pIdleCount,
|
||||
OUT PULONG pKernelAndUser,
|
||||
OUT PULONG pIndex)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
ExGetCurrentProcessorCounts( (PULONG) pIdleCount, (PULONG) pKernelAndUser, (PULONG) pIndex);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetSystemUpTime(OUT PULONG pSystemUpTime)
|
||||
{
|
||||
ULONG Increment;
|
||||
LARGE_INTEGER TickCount;
|
||||
|
||||
/* Get the increment and current tick count */
|
||||
Increment = KeQueryTimeIncrement();
|
||||
KeQueryTickCount(&TickCount);
|
||||
|
||||
/* Convert to milliseconds and return */
|
||||
TickCount.QuadPart *= Increment;
|
||||
TickCount.QuadPart /= (10 * 1000);
|
||||
*pSystemUpTime = TickCount.LowPart;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedDecrement
|
||||
LONG
|
||||
EXPORT
|
||||
NdisInterlockedDecrement(
|
||||
IN PLONG Addend)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return InterlockedDecrement ( Addend );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedIncrement
|
||||
LONG
|
||||
EXPORT
|
||||
NdisInterlockedIncrement(
|
||||
IN PLONG Addend)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return InterlockedIncrement ( Addend );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedPopEntrySList
|
||||
PSINGLE_LIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedPopEntrySList(
|
||||
IN PSLIST_HEADER ListHead,
|
||||
IN PKSPIN_LOCK Lock)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return ExInterlockedPopEntrySList ( ListHead, Lock );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
#undef NdisInterlockedPushEntrySList
|
||||
PSINGLE_LIST_ENTRY
|
||||
EXPORT
|
||||
NdisInterlockedPushEntrySList(
|
||||
IN PSLIST_HEADER ListHead,
|
||||
IN PSINGLE_LIST_ENTRY ListEntry,
|
||||
IN PKSPIN_LOCK Lock)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
return ExInterlockedPushEntrySList ( ListHead, ListEntry, Lock );
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
ndisProcWorkItemHandler(PVOID pContext)
|
||||
{
|
||||
PNDIS_WORK_ITEM pNdisItem = (PNDIS_WORK_ITEM)pContext;
|
||||
pNdisItem->Routine(pNdisItem, pNdisItem->Context);
|
||||
}
|
||||
|
||||
EXPORT
|
||||
NDIS_STATUS
|
||||
NdisScheduleWorkItem(
|
||||
IN PNDIS_WORK_ITEM pWorkItem)
|
||||
{
|
||||
PWORK_QUEUE_ITEM pntWorkItem = (PWORK_QUEUE_ITEM)pWorkItem->WrapperReserved;
|
||||
ExInitializeWorkItem(pntWorkItem, ndisProcWorkItemHandler, pWorkItem);
|
||||
ExQueueWorkItem(pntWorkItem, CriticalWorkQueue);
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/* EOF */
|
|
@ -980,4 +980,31 @@ NdisReEnumerateProtocolBindings(IN NDIS_HANDLE NdisProtocolHandle)
|
|||
ndisBindMiniportsToProtocol(&NdisStatus, &Protocol->Chars);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
EXPORT
|
||||
NdisGetDriverHandle(
|
||||
IN PNDIS_HANDLE NdisBindingHandle,
|
||||
OUT PNDIS_HANDLE NdisDriverHandle)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
PADAPTER_BINDING Binding = (PADAPTER_BINDING)NdisBindingHandle;
|
||||
|
||||
if (!Binding)
|
||||
{
|
||||
*NdisDriverHandle = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
*NdisDriverHandle = Binding->Adapter->NdisMiniportBlock.DriverHandle;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
Loading…
Reference in a new issue