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>
|
<pch>ndissys.h</pch>
|
||||||
</directory>
|
</directory>
|
||||||
<directory name="ndis">
|
<directory name="ndis">
|
||||||
<file>40gone.c</file>
|
<file>30stubs.c</file>
|
||||||
<file>50gone.c</file>
|
<file>40stubs.c</file>
|
||||||
|
<file>50stubs.c</file>
|
||||||
<file>buffer.c</file>
|
<file>buffer.c</file>
|
||||||
<file>cl.c</file>
|
<file>cl.c</file>
|
||||||
<file>cm.c</file>
|
<file>cm.c</file>
|
||||||
|
@ -32,9 +33,9 @@
|
||||||
<file>main.c</file>
|
<file>main.c</file>
|
||||||
<file>memory.c</file>
|
<file>memory.c</file>
|
||||||
<file>miniport.c</file>
|
<file>miniport.c</file>
|
||||||
|
<file>misc.c</file>
|
||||||
<file>protocol.c</file>
|
<file>protocol.c</file>
|
||||||
<file>string.c</file>
|
<file>string.c</file>
|
||||||
<file>stubs.c</file>
|
|
||||||
<file>time.c</file>
|
<file>time.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
<file>ndis.rc</file>
|
<file>ndis.rc</file>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS NDIS library
|
* PROJECT: ReactOS NDIS library
|
||||||
* FILE: ndis/40gone.c
|
* FILE: ndis/30stubs.c
|
||||||
* PURPOSE: Obsoleted functions in NDIS 4.0
|
* PURPOSE: NDIS 3.0 Stubs
|
||||||
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||||
* REVISIONS:
|
* REVISIONS:
|
||||||
* CSH 01/08-2000 Created
|
* CSH 01/08-2000 Created
|
||||||
|
@ -102,27 +102,6 @@ NdisAllocateDmaChannel(
|
||||||
UNIMPLEMENTED
|
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
|
* @unimplemented
|
||||||
*/
|
*/
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS NDIS library
|
* PROJECT: ReactOS NDIS library
|
||||||
* FILE: ndis/50gone.c
|
* FILE: ndis/40stubs.c
|
||||||
* PURPOSE: Obsoleted functions in NDIS 5.0
|
* PURPOSE: NDIS 4.0 stubs
|
||||||
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||||
* REVISIONS:
|
* REVISIONS:
|
||||||
* CSH 01/08-2000 Created
|
* 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
|
* @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
|
* @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
|
* @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
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -414,4 +323,66 @@ NdisUpdateSharedMemory(
|
||||||
/* No-op. */
|
/* 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 */
|
/* EOF */
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS NDIS library
|
* PROJECT: ReactOS NDIS library
|
||||||
* FILE: ndis/stubs.c
|
* FILE: ndis/50stubs.c
|
||||||
* PURPOSE: Stubs
|
* PURPOSE: NDIS 5.0 Stubs
|
||||||
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||||
* REVISIONS:
|
* REVISIONS:
|
||||||
* CSH 01/08-2000 Created
|
* 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
|
* @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
|
NdisOpenGlobalConfiguration
|
||||||
*/
|
*/
|
||||||
|
@ -390,32 +154,6 @@ NdisSetProtocolFilter(
|
||||||
#endif
|
#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
|
NdisUpcaseUnicodeString
|
||||||
NdisUpdateSharedMemory@4
|
NdisUpdateSharedMemory@4
|
||||||
|
@ -427,9 +165,6 @@ NdisWriteEventLogEntry
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* NDIS 5.0 extensions */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @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
|
* @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
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -854,8 +442,6 @@ NdisWritePcmciaAttributeMemory(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* NDIS 5.0 extensions for intermediate drivers */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -1014,22 +600,123 @@ NdisIMInitializeDeviceInstanceEx(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
EXPORT
|
||||||
ndisProcWorkItemHandler(PVOID pContext)
|
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;
|
UNIMPLEMENTED
|
||||||
pNdisItem->Routine(pNdisItem, pNdisItem->Context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
UINT
|
||||||
EXPORT
|
EXPORT
|
||||||
NDIS_STATUS
|
NdisPacketPoolUsage(
|
||||||
NdisScheduleWorkItem(
|
IN NDIS_HANDLE PoolHandle)
|
||||||
IN PNDIS_WORK_ITEM pWorkItem)
|
/*
|
||||||
|
* FUNCTION:
|
||||||
|
* ARGUMENTS:
|
||||||
|
* NOTES:
|
||||||
|
* NDIS 5.0
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
PWORK_QUEUE_ITEM pntWorkItem = (PWORK_QUEUE_ITEM)pWorkItem->WrapperReserved;
|
UNIMPLEMENTED
|
||||||
ExInitializeWorkItem(pntWorkItem, ndisProcWorkItemHandler, pWorkItem);
|
|
||||||
ExQueueWorkItem(pntWorkItem, CriticalWorkQueue);
|
return 0;
|
||||||
return NDIS_STATUS_SUCCESS;
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @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
|
* @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
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -218,23 +218,6 @@ NdisFreeSpinLock(
|
||||||
/* Nothing to do here! */
|
/* 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
|
* @implemented
|
||||||
|
|
|
@ -152,37 +152,6 @@ NdisQueryMapRegisterCount(
|
||||||
return NDIS_STATUS_NOT_SUPPORTED;
|
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
|
* @implemented
|
||||||
|
|
|
@ -525,29 +525,6 @@ NdisMDeregisterInterrupt(
|
||||||
Interrupt->Miniport->Interrupt = NULL;
|
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
|
* @implemented
|
||||||
|
@ -971,5 +948,31 @@ NdisMInitializeScatterGatherDma(
|
||||||
return NDIS_STATUS_SUCCESS;
|
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 */
|
/* EOF */
|
||||||
|
|
||||||
|
|
|
@ -135,36 +135,6 @@ NdisFreeMemory(
|
||||||
ExFreePool(VirtualAddress);
|
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
|
* @implemented
|
||||||
|
@ -197,24 +167,6 @@ NdisMAllocateSharedMemory(
|
||||||
Adapter->NdisMiniportBlock.SystemAdapterObject, Length, PhysicalAddress, Cached);
|
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
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -293,5 +245,52 @@ NdisMFreeSharedMemory(
|
||||||
ZwClose(ThreadHandle);
|
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 */
|
/* EOF */
|
||||||
|
|
||||||
|
|
|
@ -2491,5 +2491,44 @@ NdisMQueryAdapterInstanceName(
|
||||||
return NDIS_STATUS_SUCCESS;
|
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 */
|
/* 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);
|
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 */
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue