stubs.c
来自「一个类似windows」· C语言 代码 · 共 1,040 行 · 第 1/2 页
C
1,040 行
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NDIS library
* FILE: ndis/stubs.c
* PURPOSE: Stubs
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 01/08-2000 Created
*/
#include "ndissys.h"
/*
* @unimplemented
*/
VOID
EXPORT
NdisCompleteQueryStatistics(
IN NDIS_HANDLE NdisAdapterHandle,
IN PNDIS_REQUEST NdisRequest,
IN NDIS_STATUS Status)
{
UNIMPLEMENTED
}
/*
* @unimplemented
*/
VOID
EXPORT
NdisCompleteUnbindAdapter(
IN NDIS_HANDLE UnbindAdapterContext,
IN NDIS_STATUS Status)
{
UNIMPLEMENTED
}
/*
* @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 );
}
/*
* @unimplemented
*/
VOID
EXPORT
NdisMapFile(
OUT PNDIS_STATUS Status,
OUT PVOID * MappedBuffer,
IN NDIS_HANDLE FileHandle)
{
UNIMPLEMENTED
}
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
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
*/
NDIS_STATUS
EXPORT
NdisIMDeInitializeDeviceInstance(
IN NDIS_HANDLE NdisMiniportHandle)
{
UNIMPLEMENTED
return NDIS_STATUS_FAILURE;
}
/*
* @unimplemented
*/
#undef NdisIMInitializeDeviceInstance
NDIS_STATUS
EXPORT
NdisIMInitializeDeviceInstance(
IN NDIS_HANDLE DriverHandle,
IN PNDIS_STRING DeviceInstance)
{
UNIMPLEMENTED
return NDIS_STATUS_FAILURE;
}
/*
* @unimplemented
*/
NDIS_STATUS
EXPORT
NdisIMRegisterLayeredMiniport(
IN NDIS_HANDLE NdisWrapperHandle,
IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
IN UINT CharacteristicsLength,
OUT PNDIS_HANDLE DriverHandle)
{
UNIMPLEMENTED
return NDIS_STATUS_FAILURE;
}
/*
* @unimplemented
*/
#undef NdisMWanIndicateReceive
VOID
EXPORT
NdisMWanIndicateReceive(
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE NdisLinkContext,
IN PUCHAR PacketBuffer,
IN UINT PacketSize)
{
UNIMPLEMENTED
}
/*
* @unimplemented
*/
#undef NdisMWanIndicateReceiveComplete
VOID
EXPORT
NdisMWanIndicateReceiveComplete(
IN NDIS_HANDLE MiniportAdapterHandle)
{
UNIMPLEMENTED
}
/*
* @unimplemented
*/
#undef NdisMWanSendComplete
VOID
EXPORT
NdisMWanSendComplete(
IN NDIS_HANDLE MiniportAdapterHandle,
IN PNDIS_WAN_PACKET Packet,
IN NDIS_STATUS Status)
{
UNIMPLEMENTED
}
/*
* @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) )
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) )
// goto cleanup;
cleanup:
if ( FullFileName.Buffer != NULL )
{
ExFreePool ( FullFileName.Buffer );
FullFileName.Buffer = NULL;
}
if ( !NT_SUCCESS(*Status) && FileHandleObject != NULL )
{
ExFreePool ( FileHandleObject );
FileHandleObject = NULL;
*FileHandle = NULL;
}
else
*FileHandle = NDIS_POBJECT_TO_HANDLE(FileHandleObject);
return;
}
/*
NdisOpenGlobalConfiguration
*/
#if 0
VOID
EXPORT
NdisRegisterTdiCallBack(
IN TDI_REGISTER_CALLBACK RegsterCallback)
{
UNIMPLEMENTED
}
#endif
/*
NdisScheduleWorkItem
*/
#if 0
VOID
EXPORT
NdisSetProtocolFilter(
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE NdisBindingHandle,
IN RECEIVE_HANDLER ReceiveHandler,
IN RECEIVE_PACKET_HANDLER ReceivePacketHandler,
IN NDIS_MEDIUM Medium,
IN UINT Offset,
IN UINT Size,
IN PUCHAR Pattern)
{
UNIMPLEMENTED
}
#endif
/*
* @unimplemented
*/
CCHAR
EXPORT
NdisSystemProcessorCount(
VOID)
{
return (CCHAR)1;
}
/*
* @unimplemented
*/
VOID
EXPORT
NdisUnmapFile(
IN NDIS_HANDLE FileHandle)
{
UNIMPLEMENTED
}
/*
NdisUpcaseUnicodeString
NdisUpdateSharedMemory@4
*/
/*
NdisWriteEventLogEntry
*/
/* NDIS 5.0 extensions */
/*
* @unimplemented
*/
VOID
EXPORT
NdisCompletePnPEvent(
IN NDIS_STATUS Status,
IN NDIS_HANDLE NdisBindingHandle,
IN PNET_PNP_EVENT NetPnPEvent)
/*
* FUNCTION:
* ARGUMENTS:
* NOTES:
* NDIS 5.0
*/
{
UNIMPLEMENTED
}
/*
* @unimplemented
*/
VOID
EXPORT
NdisConvertStringToAtmAddress(
OUT PNDIS_STATUS Status,
IN PNDIS_STRING String,
OUT PATM_ADDRESS AtmAddress)
/*
* FUNCTION:
* ARGUMENTS:
* NOTES:
* NDIS 5.0
*/
{
UNIMPLEMENTED
}
/*
* @unimplemented
*/
VOID
EXPORT
NdisGetCurrentProcessorCounts(
OUT PULONG pIdleCount,
OUT PULONG pKernelAndUser,
OUT PULONG pIndex)
/*
* FUNCTION:
* ARGUMENTS:
* NOTES:
* NDIS 5.0
*/
{
UNIMPLEMENTED
}
/*
* @unimplemented
*/
VOID
EXPORT
NdisGetDriverHandle(
IN PNDIS_HANDLE NdisBindingHandle,
OUT PNDIS_HANDLE NdisDriverHandle)
/*
* FUNCTION:
* ARGUMENTS:
* NOTES:
* NDIS 5.0
*/
{
UNIMPLEMENTED
}
/*
* @unimplemented
*/
PNDIS_PACKET
EXPORT
NdisGetReceivedPacket(
IN PNDIS_HANDLE NdisBindingHandle,
IN PNDIS_HANDLE MacContext)
/*
* FUNCTION:
* ARGUMENTS:
* NOTES:
* NDIS 5.0
*/
{
UNIMPLEMENTED
return NULL;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?