summaryrefslogtreecommitdiff
path: root/network/netadaptercx/netvadapter/drivercode/device.h
blob: 3b8e5d2d3e1eb2b43e3a3be6102856ccea6e23f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright (c) Microsoft Corporation. All rights reserved

#pragma once

#include "netvadapter.h"

class NetvDevice
{

public:

    //
    // Do not add variable before WdfTriageInfoPtr.
    // NetAdapterCx carving code requires the first field of
    // WDF context to be a pointer to WDF_TRIAGE_INFO.
    //
    void *
        m_triage = nullptr;

    NetvDevice(
        WDFDEVICE Handle
    );

    NTSTATUS
    Initialize(
        void
    );

    NTSTATUS
    PrepareHardware(
        WDFCMRESLIST ResourcesRaw,
        WDFCMRESLIST ResourcesTranslated
    );

public: // private:

    WDFDEVICE
        m_handle = WDF_NO_HANDLE;

    NetvAdapter *
        m_adapter = nullptr;

};
static_assert(FIELD_OFFSET(NetvDevice, m_triage) == 0u);

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(NetvDevice, NetvDeviceGetContext);
WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(NetvAdapter, NetvAdapterGetContext);

EVT_WDF_DEVICE_PREPARE_HARDWARE
    EvtDevicePrepareHardware;