static_assert(sizeof(MtrrData) == 24, "Size check"); //////////////////////////////////////////////////////////////////////////////// // // prototypes // struct GuestContext; //----------------------------------------------------------------------------------------------------------------// NTSTATUS VmmpSetLastFaultAddr( _In_ GuestContext *guest_context, _In_ ULONG_PTR LastFaultAddr ); _When_(ept_data == nullptr, _IRQL_requires_max_(DISPATCH_LEVEL)) static EptCommonEntry *EptpConstructTables(_In_ EptCommonEntry *table, _In_ ULONG table_level, _In_ ULONG64 physical_address, _In_opt_ EptData *ept_data); static void EptpDestructTables(_In_ EptCommonEntry *table, _In_ ULONG table_level); _Must_inspect_result_ __drv_allocatesMem(Mem) _When_(ept_data == nullptr, _IRQL_requires_max_(DISPATCH_LEVEL)) static EptCommonEntry *EptpAllocateEptEntry(_In_opt_ EptData *ept_data); static EptCommonEntry *EptpAllocateEptEntryFromPreAllocated( _In_ EptData *ept_data);
/** * Sends the given network data along this adapter. This adapter must be in the running state or the request * will be rejected. This function may return before the data has been transmitted. After completion * (whether success or failure), NdisMSendNetBufferListsComplete will be called. Until NdisMSendNetBufferListsComplete * is called, this adapter owns the netBufferList object provided. After NdisMSendNetBufferListsComplete is called, * ownership is released and the memory is treated as inaccessible. Note that a call to NdisMSendNetBufferListsComplete * does not necessarily mean the data has been transmitted, but rather that it has at least been queued for transmission * and the buffer is no longer needed. * @param netBufferList a linked list of NET_BUFFER_LIST objects indicating the data to be transmitted, in order * @param sendFlags the flags associted with this send operation. If NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK is set, then * this function will check to see if the data should loop back. If NDIS_SEND_FLAGS_DISPATCH_LEVEL is set, then the current * IRQL is DISPATCH_LEVEL. */ _When_(sendFlags & NDIS_SEND_FLAGS_DISPATCH_LEVEL, _IRQL_requires_(DISPATCH_LEVEL)) _When_(!(sendFlags & NDIS_SEND_FLAGS_DISPATCH_LEVEL), _IRQL_requires_max_(APC_LEVEL)) _IRQL_requires_same_ NON_PAGEABLE_FUNCTION void AX25Adapter::SendNetBufferLists( _In_ NET_BUFFER_LIST& netBufferList, _In_ ULONG sendFlags) noexcept { // TODO: Enqueue the data UNREFERENCED_PARAMETER(netBufferList); UNREFERENCED_PARAMETER(sendFlags); } /** * Returns the specified NET_BUFFER_LIST objects to being owned by this object so that they * can be reused in future receive operations. * @param netBufferLists a linked list of NET_BUFFER_LIST objects that are to be returned to ownership