ReactOS 0.4.16-dev-1946-g52006dd
misc.c File Reference
#include "ndissys.h"
Include dependency graph for misc.c:

Go to the source code of this file.

Classes

struct  _NDIS_HANDLE_OBJECT
 

Typedefs

typedef struct _NDIS_HANDLE_OBJECT NDIS_HANDLE_OBJECT
 
typedef struct _NDIS_HANDLE_OBJECTPNDIS_HANDLE_OBJECT
 

Functions

VOID EXPORT NdisInterlockedAddUlong (IN PULONG Addend, IN ULONG Increment, IN PNDIS_SPIN_LOCK SpinLock)
 
VOID EXPORT NdisInterlockedAddLargeInteger (IN PLARGE_INTEGER Addend, IN LARGE_INTEGER Increment, IN PNDIS_SPIN_LOCK SpinLock)
 
LONG EXPORT NdisCompareAnsiString (IN PNDIS_ANSI_STRING String1, IN PNDIS_ANSI_STRING String2, BOOLEAN CaseInSensitive)
 
LONG EXPORT NdisCompareUnicodeString (IN PNDIS_STRING String1, IN PNDIS_STRING String2, IN BOOLEAN CaseInSensitive)
 
PLIST_ENTRY EXPORT NdisInterlockedInsertHeadList (IN PLIST_ENTRY ListHead, IN PLIST_ENTRY ListEntry, IN PNDIS_SPIN_LOCK SpinLock)
 
PLIST_ENTRY EXPORT NdisInterlockedInsertTailList (IN PLIST_ENTRY ListHead, IN PLIST_ENTRY ListEntry, IN PNDIS_SPIN_LOCK SpinLock)
 
PLIST_ENTRY EXPORT NdisInterlockedRemoveHeadList (IN PLIST_ENTRY ListHead, IN PNDIS_SPIN_LOCK SpinLock)
 
FORCEINLINE PNDIS_HANDLE_OBJECT NDIS_HANDLE_TO_POBJECT (NDIS_HANDLE handle)
 
FORCEINLINE NDIS_HANDLE NDIS_POBJECT_TO_HANDLE (PNDIS_HANDLE_OBJECT obj)
 
VOID EXPORT NdisMapFile (OUT PNDIS_STATUS Status, OUT PVOID *MappedBuffer, IN NDIS_HANDLE FileHandle)
 
VOID EXPORT NdisUnmapFile (IN NDIS_HANDLE FileHandle)
 
VOID EXPORT NdisCloseFile (IN NDIS_HANDLE FileHandle)
 
VOID EXPORT NdisOpenFile (OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE FileHandle, OUT PUINT FileLength, IN PNDIS_STRING FileName, IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress)
 
CCHAR EXPORT NdisSystemProcessorCount (VOID)
 
VOID EXPORT NdisGetCurrentProcessorCounts (OUT PULONG pIdleCount, OUT PULONG pKernelAndUser, OUT PULONG pIndex)
 
VOID EXPORT NdisGetSystemUpTime (OUT PULONG pSystemUpTime)
 
LONG EXPORT NdisInterlockedDecrement (IN PLONG Addend)
 
LONG EXPORT NdisInterlockedIncrement (IN PLONG Addend)
 
PSINGLE_LIST_ENTRY EXPORT NdisInterlockedPopEntrySList (IN PSLIST_HEADER ListHead, IN PKSPIN_LOCK Lock)
 
PSINGLE_LIST_ENTRY EXPORT NdisInterlockedPushEntrySList (IN PSLIST_HEADER ListHead, IN PSINGLE_LIST_ENTRY ListEntry, IN PKSPIN_LOCK Lock)
 
VOID NTAPI ndisProcWorkItemHandler (PVOID pContext)
 
NDIS_STATUS EXPORT NdisScheduleWorkItem (IN PNDIS_WORK_ITEM pWorkItem)
 
VOID EXPORT NdisGetCurrentProcessorCpuUsage (PULONG pCpuUsage)
 
ULONG EXPORT NdisGetSharedDataAlignment (VOID)
 
UINT EXPORT NdisGetVersion (VOID)
 
UCHAR EXPORT NdisGeneratePartialCancelId (VOID)
 

Variables

LONG CancelId
 
static const WCHAR NDIS_FILE_FOLDER [] = L"\\SystemRoot\\System32\\Drivers\\"
 

Typedef Documentation

◆ NDIS_HANDLE_OBJECT

◆ PNDIS_HANDLE_OBJECT

Function Documentation

◆ NDIS_HANDLE_TO_POBJECT()

FORCEINLINE PNDIS_HANDLE_OBJECT NDIS_HANDLE_TO_POBJECT ( NDIS_HANDLE  handle)

Definition at line 129 of file misc.c.

130{
132}

Referenced by NdisCloseFile().

◆ NDIS_POBJECT_TO_HANDLE()

FORCEINLINE NDIS_HANDLE NDIS_POBJECT_TO_HANDLE ( PNDIS_HANDLE_OBJECT  obj)

Definition at line 136 of file misc.c.

137{
138 return (NDIS_HANDLE)obj;
139}

Referenced by NdisOpenFile().

◆ NdisCloseFile()

VOID EXPORT NdisCloseFile ( IN NDIS_HANDLE  FileHandle)

Definition at line 192 of file misc.c.

194{
195 PNDIS_HANDLE_OBJECT FileHandleObject;
196
198
199 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
200
201 ASSERT ( FileHandle );
202
203 FileHandleObject = NDIS_HANDLE_TO_POBJECT(FileHandle);
204
205 if ( FileHandleObject->MapBuffer )
206 ExFreePool ( FileHandleObject->MapBuffer );
207 ExFreePool ( FileHandleObject );
208}
#define MAX_TRACE
Definition: debug.h:16
#define ASSERT_IRQL(x)
Definition: debug.h:42
#define NDIS_DbgPrint(_t_, _x_)
Definition: debug.h:40
FORCEINLINE PNDIS_HANDLE_OBJECT NDIS_HANDLE_TO_POBJECT(NDIS_HANDLE handle)
Definition: misc.c:129
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define ExFreePool(addr)
Definition: env_spec_w32.h:352
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
Definition: fltkernel.h:1231
#define ASSERT(a)
Definition: mode.c:44
PVOID MapBuffer
Definition: misc.c:124

◆ NdisCompareAnsiString()

LONG EXPORT NdisCompareAnsiString ( IN PNDIS_ANSI_STRING  String1,
IN PNDIS_ANSI_STRING  String2,
BOOLEAN  CaseInSensitive 
)

Definition at line 49 of file misc.c.

53{
54 /* This one needs to be verified also. See the
55 * comment in NdisInterlockedAddLargeInteger
56 */
57
59}
_In_ const STRING * String2
Definition: rtlfuncs.h:2404
_In_ const STRING _In_ BOOLEAN CaseInSensitive
Definition: rtlfuncs.h:2437
NTSYSAPI LONG NTAPI RtlCompareString(PSTRING String1, PSTRING String2, BOOLEAN CaseInSensitive)

◆ NdisCompareUnicodeString()

LONG EXPORT NdisCompareUnicodeString ( IN PNDIS_STRING  String1,
IN PNDIS_STRING  String2,
IN BOOLEAN  CaseInSensitive 
)

Definition at line 66 of file misc.c.

70{
71 /* This one needs to be verified also. See the
72 * comment in NdisInterlockedAddLargeInteger
73 */
74
76}
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
Definition: string_lib.cpp:31

◆ NdisGeneratePartialCancelId()

UCHAR EXPORT NdisGeneratePartialCancelId ( VOID  )

Definition at line 575 of file misc.c.

576{
577 UCHAR PartialCancelId;
578
579 PartialCancelId = (UCHAR)InterlockedIncrement(&CancelId);
580
581 NDIS_DbgPrint(MAX_TRACE, ("Cancel ID %u\n", PartialCancelId));
582
583 return PartialCancelId;
584}
#define InterlockedIncrement
Definition: armddk.h:53
LONG CancelId
Definition: main.c:23
unsigned char UCHAR
Definition: xmlstorage.h:181

◆ NdisGetCurrentProcessorCounts()

VOID EXPORT NdisGetCurrentProcessorCounts ( OUT PULONG  pIdleCount,
OUT PULONG  pKernelAndUser,
OUT PULONG  pIndex 
)

Definition at line 385 of file misc.c.

395{
396 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
397
399}
_Out_ PULONG _Out_ PULONG pIndex
Definition: ndis.h:4565
_Out_ PULONG pKernelAndUser
Definition: ndis.h:4564
VOID NTAPI ExGetCurrentProcessorCounts(PULONG IdleTime, PULONG KernelAndUserTime, PULONG ProcessorNumber)
Definition: sysinfo.c:345
uint32_t * PULONG
Definition: typedefs.h:59

◆ NdisGetCurrentProcessorCpuUsage()

VOID EXPORT NdisGetCurrentProcessorCpuUsage ( PULONG  pCpuUsage)

Definition at line 533 of file misc.c.

540{
541 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
542
544}
VOID NTAPI ExGetCurrentProcessorCpuUsage(PULONG CpuUsage)
Definition: sysinfo.c:324

◆ NdisGetSharedDataAlignment()

ULONG EXPORT NdisGetSharedDataAlignment ( VOID  )

Definition at line 551 of file misc.c.

552{
553 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
554
556}
ULONG NTAPI KeGetRecommendedSharedDataAlignment(VOID)
Definition: cpu.c:709

Referenced by DcInitialize(), and MiniportInitialize().

◆ NdisGetSystemUpTime()

VOID EXPORT NdisGetSystemUpTime ( OUT PULONG  pSystemUpTime)

Definition at line 407 of file misc.c.

408{
410 LARGE_INTEGER TickCount;
411
412 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
413
414 /* Get the increment and current tick count */
416 KeQueryTickCount(&TickCount);
417
418 /* Convert to milliseconds and return */
419 TickCount.QuadPart *= Increment;
420 TickCount.QuadPart /= (10 * 1000);
421 *pSystemUpTime = TickCount.LowPart;
422}
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
Definition: CrNtStubs.h:46
ULONG NTAPI KeQueryTimeIncrement(VOID)
Definition: clock.c:153
#define KeQueryTickCount(CurrentCount)
Definition: ke.h:43
uint32_t ULONG
Definition: typedefs.h:59
LONGLONG QuadPart
Definition: typedefs.h:114
ULONG LowPart
Definition: typedefs.h:106

◆ NdisGetVersion()

UINT EXPORT NdisGetVersion ( VOID  )

Definition at line 563 of file misc.c.

564{
565 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
566
567 return NDIS_VERSION;
568}
#define NDIS_VERSION
Definition: ndissys.h:27

◆ NdisInterlockedAddLargeInteger()

VOID EXPORT NdisInterlockedAddLargeInteger ( IN PLARGE_INTEGER  Addend,
IN LARGE_INTEGER  Increment,
IN PNDIS_SPIN_LOCK  SpinLock 
)

Definition at line 30 of file misc.c.

34{
35 /* This needs to be verified. The documentation
36 * seems to be missing but it is exported by
37 * NDIS 5.1 so I'm implementing it like the other
38 * interlocked routines
39 */
40
42}
IN OUT PLONG Addend
Definition: CrNtStubs.h:25
LARGE_INTEGER NTAPI ExInterlockedAddLargeInteger(IN OUT PLARGE_INTEGER Addend, IN LARGE_INTEGER Increment, IN OUT PKSPIN_LOCK Lock)
Definition: interlocked.c:62
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
Definition: wdfsync.h:228

◆ NdisInterlockedAddUlong()

VOID EXPORT NdisInterlockedAddUlong ( IN PULONG  Addend,
IN ULONG  Increment,
IN PNDIS_SPIN_LOCK  SpinLock 
)

Definition at line 17 of file misc.c.

21{
23}
ULONG NTAPI ExInterlockedAddUlong(IN OUT PULONG Addend, IN ULONG Increment, IN OUT PKSPIN_LOCK Lock)
Definition: interlocked.c:88

◆ NdisInterlockedDecrement()

LONG EXPORT NdisInterlockedDecrement ( IN PLONG  Addend)

Definition at line 430 of file misc.c.

438{
439 return InterlockedDecrement ( Addend );
440}
#define InterlockedDecrement
Definition: armddk.h:52

◆ NdisInterlockedIncrement()

LONG EXPORT NdisInterlockedIncrement ( IN PLONG  Addend)

Definition at line 449 of file misc.c.

457{
458 return InterlockedIncrement ( Addend );
459}

◆ NdisInterlockedInsertHeadList()

PLIST_ENTRY EXPORT NdisInterlockedInsertHeadList ( IN PLIST_ENTRY  ListHead,
IN PLIST_ENTRY  ListEntry,
IN PNDIS_SPIN_LOCK  SpinLock 
)

Definition at line 84 of file misc.c.

88{
89 return ExInterlockedInsertHeadList ( ListHead, ListEntry, &SpinLock->SpinLock );
90}
PLIST_ENTRY NTAPI ExInterlockedInsertHeadList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
Definition: interlocked.c:114

◆ NdisInterlockedInsertTailList()

PLIST_ENTRY EXPORT NdisInterlockedInsertTailList ( IN PLIST_ENTRY  ListHead,
IN PLIST_ENTRY  ListEntry,
IN PNDIS_SPIN_LOCK  SpinLock 
)

Definition at line 98 of file misc.c.

102{
103 return ExInterlockedInsertTailList ( ListHead, ListEntry, &SpinLock->SpinLock );
104}
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
Definition: interlocked.c:140

◆ NdisInterlockedPopEntrySList()

PSINGLE_LIST_ENTRY EXPORT NdisInterlockedPopEntrySList ( IN PSLIST_HEADER  ListHead,
IN PKSPIN_LOCK  Lock 
)

Definition at line 468 of file misc.c.

477{
479}
Definition: ntbasedef.h:640
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
Definition: wdfsync.h:127
#define ExInterlockedPopEntrySList(SListHead, Lock)
Definition: exfuncs.h:166

◆ NdisInterlockedPushEntrySList()

PSINGLE_LIST_ENTRY EXPORT NdisInterlockedPushEntrySList ( IN PSLIST_HEADER  ListHead,
IN PSINGLE_LIST_ENTRY  ListEntry,
IN PKSPIN_LOCK  Lock 
)

Definition at line 488 of file misc.c.

498{
499 return (PSINGLE_LIST_ENTRY)ExInterlockedPushEntrySList ( ListHead, (PSLIST_ENTRY)ListEntry, Lock );
500}
#define ExInterlockedPushEntrySList(SListHead, SListEntry, Lock)
Definition: exfuncs.h:163
#define PSLIST_ENTRY
Definition: rtltypes.h:134

◆ NdisInterlockedRemoveHeadList()

PLIST_ENTRY EXPORT NdisInterlockedRemoveHeadList ( IN PLIST_ENTRY  ListHead,
IN PNDIS_SPIN_LOCK  SpinLock 
)

Definition at line 113 of file misc.c.

116{
117 return ExInterlockedRemoveHeadList ( ListHead, &SpinLock->SpinLock );
118}
PLIST_ENTRY NTAPI ExInterlockedRemoveHeadList(IN OUT PLIST_ENTRY ListHead, IN OUT PKSPIN_LOCK Lock)
Definition: interlocked.c:166

◆ NdisMapFile()

VOID EXPORT NdisMapFile ( OUT PNDIS_STATUS  Status,
OUT PVOID MappedBuffer,
IN NDIS_HANDLE  FileHandle 
)

Definition at line 148 of file misc.c.

152{
154
155 NDIS_DbgPrint(MAX_TRACE, ("called: FileHandle 0x%x\n", FileHandle));
156
157 if (HandleObject->Mapped)
158 {
159 /* If a file already mapped we will return an error code */
160 NDIS_DbgPrint(MIN_TRACE, ("File already mapped\n"));
162 return;
163 }
164
165 HandleObject->Mapped = TRUE;
166 *MappedBuffer = HandleObject->MapBuffer;
167
168 /* Set returned status */
170}
#define MIN_TRACE
Definition: debug.h:14
#define TRUE
Definition: types.h:120
struct _NDIS_HANDLE_OBJECT * PNDIS_HANDLE_OBJECT
Status
Definition: gdiplustypes.h:25
#define NDIS_STATUS_ALREADY_MAPPED
Definition: ndis.h:494
_Out_ PVOID * MappedBuffer
Definition: ndis.h:3245
#define STATUS_SUCCESS
Definition: shellext.h:65
BOOLEAN Mapped
Definition: misc.c:122

◆ NdisOpenFile()

VOID EXPORT NdisOpenFile ( OUT PNDIS_STATUS  Status,
OUT PNDIS_HANDLE  FileHandle,
OUT PUINT  FileLength,
IN PNDIS_STRING  FileName,
IN NDIS_PHYSICAL_ADDRESS  HighestAcceptableAddress 
)

Definition at line 216 of file misc.c.

222{
223 HANDLE NtFileHandle = NULL;
224 NDIS_STRING FullFileName;
226 PNDIS_HANDLE_OBJECT FileHandleObject = NULL;
228 FILE_STANDARD_INFORMATION StandardInfo;
229 UINT NtFileLength;
230 NTSTATUS NtStatus;
231
233
234 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
235
236 ASSERT ( Status && FileName );
237
239 FullFileName.Buffer = NULL;
240
241 FullFileName.Length = sizeof(NDIS_FILE_FOLDER) - sizeof(UNICODE_NULL);
242 FullFileName.MaximumLength = FileName->MaximumLength + FullFileName.Length;
243 FullFileName.Buffer = ExAllocatePool ( NonPagedPool, FullFileName.MaximumLength );
244
245 if ( !FullFileName.Buffer )
246 {
247 NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
249 goto cleanup;
250 }
251
252 FileHandleObject = ExAllocatePool ( NonPagedPool, sizeof(NDIS_HANDLE_OBJECT) );
253 if ( !FileHandleObject )
254 {
255 NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources\n"));
257 goto cleanup;
258 }
259 memset ( FileHandleObject, 0, sizeof(NDIS_HANDLE_OBJECT) );
260
261 memmove ( FullFileName.Buffer, NDIS_FILE_FOLDER, FullFileName.Length );
262 NtStatus = RtlAppendUnicodeStringToString ( &FullFileName, FileName );
263 if ( !NT_SUCCESS(NtStatus) )
264 {
265 NDIS_DbgPrint(MIN_TRACE, ("RtlAppendUnicodeStringToString failed (%x)\n", NtStatus));
267 goto cleanup;
268 }
269
271 &FullFileName,
273 NULL,
274 NULL );
275
276 NtStatus = ZwCreateFile (
277 &NtFileHandle,
281 NULL, // PLARGE_INTEGER AllocationSize
282 0, // ULONG FileAttributes
283 FILE_SHARE_READ, // ULONG ShareAccess
284 FILE_OPEN, // ULONG CreateDisposition
285 FILE_SYNCHRONOUS_IO_NONALERT, // ULONG CreateOptions
286 0, // PVOID EaBuffer
287 0 ); // ULONG EaLength
288
289 if ( !NT_SUCCESS(NtStatus) )
290 {
291 NDIS_DbgPrint(MIN_TRACE, ("ZwCreateFile failed (%x) Name %wZ\n", NtStatus, FileName));
293 goto cleanup;
294 }
295
296 NtStatus = ZwQueryInformationFile(
297 NtFileHandle,
299 &StandardInfo,
300 sizeof(StandardInfo),
302 if (!NT_SUCCESS(NtStatus))
303 {
304 NDIS_DbgPrint(MIN_TRACE, ("ZwQueryInformationFile failed (%x) Name %wZ\n", NtStatus, FileName));
306 goto cleanup;
307 }
308 if (StandardInfo.EndOfFile.HighPart != 0 || StandardInfo.EndOfFile.LowPart == 0)
309 {
310 NDIS_DbgPrint(MIN_TRACE, ("ZwQueryInformationFile failed Name %wZ\n", FileName));
312 goto cleanup;
313 }
314 NtFileLength = StandardInfo.EndOfFile.LowPart;
315
316 FileHandleObject->MapBuffer = ExAllocatePool( NonPagedPool, NtFileLength );
317 if (!FileHandleObject->MapBuffer)
318 {
319 NDIS_DbgPrint(MIN_TRACE, ("ExAllocatePool failed Name %wZ\n", FileName));
321 goto cleanup;
322 }
323
324 NtStatus = ZwReadFile(
325 NtFileHandle,
326 NULL,
327 NULL,
328 NULL,
330 FileHandleObject->MapBuffer,
331 NtFileLength,
332 NULL,
333 NULL);
334 if ( !NT_SUCCESS(NtStatus) || IoStatusBlock.Information != NtFileLength )
335 {
336 NDIS_DbgPrint(MIN_TRACE, ("ZwReadFile failed (%x) Name %wZ\n", NtStatus, FileName));
338 goto cleanup;
339 }
340
341cleanup:
342 if ( NtFileHandle != NULL )
343 {
344 ZwClose( NtFileHandle );
345 }
346 if ( FullFileName.Buffer != NULL )
347 {
348 ExFreePool ( FullFileName.Buffer );
349 FullFileName.Buffer = NULL;
350 }
351 if ( !NT_SUCCESS(*Status) )
352 {
353 if ( FileHandleObject )
354 {
355 if ( FileHandleObject->MapBuffer )
356 ExFreePool( FileHandleObject->MapBuffer );
357 ExFreePool ( FileHandleObject );
358 }
359 *FileHandle = NULL;
360 }
361 else
362 {
363 *FileHandle = NDIS_POBJECT_TO_HANDLE(FileHandleObject);
364 *FileLength = NtFileLength;
365 }
366}
LONG NTSTATUS
Definition: precomp.h:26
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define NULL
Definition: types.h:112
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define FILE_SHARE_READ
Definition: compat.h:136
static void cleanup(void)
Definition: main.c:1335
static const WCHAR NDIS_FILE_FOLDER[]
Definition: misc.c:141
FORCEINLINE NDIS_HANDLE NDIS_POBJECT_TO_HANDLE(PNDIS_HANDLE_OBJECT obj)
Definition: misc.c:136
#define NonPagedPool
Definition: env_spec_w32.h:307
#define ExAllocatePool(type, size)
Definition: fbtusb.h:44
#define FILE_OPEN
Definition: from_kernel.h:54
#define FILE_SYNCHRONOUS_IO_NONALERT
Definition: from_kernel.h:31
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define memmove(s1, s2, n)
Definition: mkisofs.h:881
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
#define NDIS_STATUS_FAILURE
Definition: ndis.h:465
_Out_ PNDIS_HANDLE _Out_ PUINT FileLength
Definition: ndis.h:3228
#define NDIS_STATUS_FILE_NOT_FOUND
Definition: ndis.h:492
#define NDIS_STATUS_SUCCESS
Definition: ndis.h:346
unsigned int UINT
Definition: ndis.h:50
#define NDIS_STATUS_ERROR_READING_FILE
Definition: ndis.h:493
#define NDIS_STATUS_RESOURCES
Definition: ndis.h:466
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define SYNCHRONIZE
Definition: nt_native.h:61
#define FILE_READ_DATA
Definition: nt_native.h:628
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
#define UNICODE_NULL
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
#define memset(x, y, z)
Definition: compat.h:39
#define FileStandardInformation
Definition: propsheet.cpp:61
USHORT MaximumLength
Definition: env_spec_w32.h:370

◆ ndisProcWorkItemHandler()

VOID NTAPI ndisProcWorkItemHandler ( PVOID  pContext)

Definition at line 505 of file misc.c.

506{
507 PNDIS_WORK_ITEM pNdisItem = (PNDIS_WORK_ITEM)pContext;
508
509 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
510
511 pNdisItem->Routine(pNdisItem, pNdisItem->Context);
512}
struct _NDIS_WORK_ITEM * PNDIS_WORK_ITEM
PVOID Context
Definition: ndis.h:2318
NDIS_PROC Routine
Definition: ndis.h:2319

Referenced by NdisScheduleWorkItem().

◆ NdisScheduleWorkItem()

NDIS_STATUS EXPORT NdisScheduleWorkItem ( IN PNDIS_WORK_ITEM  pWorkItem)

Definition at line 516 of file misc.c.

518{
519 PWORK_QUEUE_ITEM pntWorkItem = (PWORK_QUEUE_ITEM)pWorkItem->WrapperReserved;
520
521 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
522
523 ExInitializeWorkItem(pntWorkItem, ndisProcWorkItemHandler, pWorkItem);
524 ExQueueWorkItem(pntWorkItem, DelayedWorkQueue);
525 return NDIS_STATUS_SUCCESS;
526}
VOID NTAPI ndisProcWorkItemHandler(PVOID pContext)
Definition: misc.c:505
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
Definition: work.c:723
#define ExInitializeWorkItem(Item, Routine, Context)
Definition: exfuncs.h:265
@ DelayedWorkQueue
Definition: extypes.h:190
struct _WORK_QUEUE_ITEM * PWORK_QUEUE_ITEM

Referenced by DcCheckForHang(), DcHandleSystemError(), DcReset(), DcSetPower(), DcTestPacket(), MiniportReset(), NvNetSetPower(), ParaNdis5_Reset(), and ParaNdis_OnSetPower().

◆ NdisSystemProcessorCount()

CCHAR EXPORT NdisSystemProcessorCount ( VOID  )

Definition at line 373 of file misc.c.

375{
376 return KeNumberProcessors;
377}
CCHAR KeNumberProcessors
Definition: processor.c:19

◆ NdisUnmapFile()

VOID EXPORT NdisUnmapFile ( IN NDIS_HANDLE  FileHandle)

Definition at line 177 of file misc.c.

179{
181
182 NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
183
184 HandleObject->Mapped = FALSE;
185}
#define FALSE
Definition: types.h:117

Variable Documentation

◆ CancelId

◆ NDIS_FILE_FOLDER

const WCHAR NDIS_FILE_FOLDER[] = L"\\SystemRoot\\System32\\Drivers\\"
static

Definition at line 141 of file misc.c.

Referenced by NdisOpenFile().