summaryrefslogtreecommitdiff
path: root/usb/UcmCxUcsi/Fdo.h
blob: 2266df2660fdc4066ad307a2d1a8c58ca387f3ea (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*++

Copyright (c) Microsoft Corporation. All rights reserved.

Module Name:

    Fdo.h

Abstract:

    FDO callbacks, functions, and types.

Environment:

    Kernel-mode only.

--*/

#pragma once

EXTERN_C_START

typedef struct _FDO_CONTEXT
{
    WDFDEVICE WdfDevice;

    ACPI_CONTEXT AcpiCtx;
    PPM_CONTEXT PpmCtx;
    WDFWORKITEM ConnectorAndNotificationWorkItem;

} FDO_CONTEXT, *PFDO_CONTEXT;

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(FDO_CONTEXT, Fdo_GetContext)

_IRQL_requires_max_(PASSIVE_LEVEL)
NTSTATUS
Fdo_Create (
    _Inout_ PWDFDEVICE_INIT DeviceInit
    );

EXTERN_C_END

PFDO_CONTEXT
FORCEINLINE
Context_GetFdoContext (
    _In_ PACPI_CONTEXT AcpiCtx
    )
{
    return CONTAINING_RECORD(AcpiCtx, FDO_CONTEXT, AcpiCtx);
}

PFDO_CONTEXT
FORCEINLINE
Context_GetFdoContext (
    _In_ PPPM_CONTEXT PpmCtx
    )
{
    return CONTAINING_RECORD(PpmCtx, FDO_CONTEXT, PpmCtx);
}

template<typename ContextType>
WDFDEVICE
FORCEINLINE
Context_GetWdfDevice (
    _In_ ContextType Ctx
    )
{
    return Context_GetFdoContext(Ctx)->WdfDevice;
}