4 * This file is part of the ReactOS DDK package.
7 * Amine Khaldi (amine.khaldi@reactos.org)
9 * THIS SOFTWARE IS NOT COPYRIGHTED
11 * This source code is offered for use in the public domain. You may
12 * use, modify or distribute it freely.
14 * This code is distributed in the hope that it will be useful but
15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16 * DISCLAIMED. This includes but is not limited to warranties of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
32 #if (NTDDI_VERSION >= NTDDI_VISTA)
34 typedef CONST
struct _NPI_CLIENT_CHARACTERISTICS
* PNPI_CLIENT_CHARACTERISTICS
;
35 typedef CONST
struct _NPI_PROVIDER_CHARACTERISTICS
* PNPI_PROVIDER_CHARACTERISTICS
;
36 typedef CONST
struct _NPI_REGISTRATION_INSTANCE
* PNPI_REGISTRATION_INSTANCE
;
38 typedef struct _NPI_REGISTRATION_INSTANCE
{
42 PNPI_MODULEID ModuleId
;
44 CONST VOID
*NpiSpecificCharacteristics OPTIONAL
;
45 } NPI_REGISTRATION_INSTANCE
;
53 (NTAPI NPI_CLIENT_ATTACH_PROVIDER_FN
)(
54 _In_ HANDLE NmrBindingHandle
,
55 _In_ PVOID ClientContext
,
56 _In_ PNPI_REGISTRATION_INSTANCE ProviderRegistrationInstance
);
57 typedef NPI_CLIENT_ATTACH_PROVIDER_FN
*PNPI_CLIENT_ATTACH_PROVIDER_FN
;
60 (NTAPI NPI_CLIENT_DETACH_PROVIDER_FN
)(
61 _In_ PVOID ClientBindingContext
);
62 typedef NPI_CLIENT_DETACH_PROVIDER_FN
*PNPI_CLIENT_DETACH_PROVIDER_FN
;
65 (NTAPI NPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN
)(
66 _In_ PVOID ClientBindingContext
);
67 typedef NPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN
*PNPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN
;
69 typedef struct _NPI_CLIENT_CHARACTERISTICS
{
72 PNPI_CLIENT_ATTACH_PROVIDER_FN ClientAttachProvider
;
73 PNPI_CLIENT_DETACH_PROVIDER_FN ClientDetachProvider
;
74 PNPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN ClientCleanupBindingContext
;
75 NPI_REGISTRATION_INSTANCE ClientRegistrationInstance
;
76 } NPI_CLIENT_CHARACTERISTICS
;
79 (NTAPI NPI_PROVIDER_ATTACH_CLIENT_FN
)(
80 _In_ HANDLE NmrBindingHandle
,
81 _In_ PVOID ProviderContext
,
82 _In_ PNPI_REGISTRATION_INSTANCE ClientRegistrationInstance
,
83 _In_ PVOID ClientBindingContext
,
84 _In_ CONST VOID
*ClientDispatch
,
85 _Out_ PVOID
*ProviderBindingContext
,
86 _Out_ CONST VOID
* *ProviderDispatch
);
87 typedef NPI_PROVIDER_ATTACH_CLIENT_FN
*PNPI_PROVIDER_ATTACH_CLIENT_FN
;
90 (NTAPI NPI_PROVIDER_DETACH_CLIENT_FN
)(
91 _In_ PVOID ProviderBindingContext
);
92 typedef NPI_PROVIDER_DETACH_CLIENT_FN
*PNPI_PROVIDER_DETACH_CLIENT_FN
;
95 (NTAPI NPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN
)(
96 _In_ PVOID ProviderBindingContext
);
97 typedef NPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN
*PNPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN
;
99 typedef struct _NPI_PROVIDER_CHARACTERISTICS
{
102 PNPI_PROVIDER_ATTACH_CLIENT_FN ProviderAttachClient
;
103 PNPI_PROVIDER_DETACH_CLIENT_FN ProviderDetachClient
;
104 PNPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN ProviderCleanupBindingContext
;
105 NPI_REGISTRATION_INSTANCE ProviderRegistrationInstance
;
106 } NPI_PROVIDER_CHARACTERISTICS
;
110 _In_ PNPI_CLIENT_CHARACTERISTICS ClientCharacteristics
,
111 _In_opt_ __drv_aliasesMem PVOID ClientContext
,
112 _Out_ PHANDLE NmrClientHandle
);
116 _In_ HANDLE NmrClientHandle
);
119 NmrWaitForClientDeregisterComplete(
120 _In_ HANDLE NmrClientHandle
);
123 NmrClientAttachProvider(
124 _In_ HANDLE NmrBindingHandle
,
125 _In_ __drv_aliasesMem PVOID ClientBindingContext
,
126 _In_ CONST VOID
*ClientDispatch
,
127 _Out_ PVOID
*ProviderBindingContext
,
128 _Out_ CONST VOID
* *ProviderDispatch
);
131 NmrClientDetachProviderComplete(
132 _In_ HANDLE NmrBindingHandle
);
136 _In_ PNPI_PROVIDER_CHARACTERISTICS ProviderCharacteristics
,
137 _In_opt_ __drv_aliasesMem PVOID ProviderContext
,
138 _Out_ PHANDLE NmrProviderHandle
);
141 NmrDeregisterProvider(
142 _In_ HANDLE NmrProviderHandle
);
145 NmrWaitForProviderDeregisterComplete(
146 _In_ HANDLE NmrProviderHandle
);
149 NmrProviderDetachClientComplete(
150 _In_ HANDLE NmrBindingHandle
);
152 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
158 #endif /* _NETIODDK_ */