diff --git a/reactos/include/ddk/netioddk.h b/reactos/include/ddk/netioddk.h new file mode 100644 index 00000000000..34eca74d51b --- /dev/null +++ b/reactos/include/ddk/netioddk.h @@ -0,0 +1,158 @@ +/* + * netioddk.h + * + * This file is part of the ReactOS DDK package. + * + * Contributors: + * Amine Khaldi (amine.khaldi@reactos.org) + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ + +#ifndef _NETIODDK_ +#define _NETIODDK_ + +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if (NTDDI_VERSION >= NTDDI_VISTA) + +typedef CONST struct _NPI_CLIENT_CHARACTERISTICS * PNPI_CLIENT_CHARACTERISTICS; +typedef CONST struct _NPI_PROVIDER_CHARACTERISTICS * PNPI_PROVIDER_CHARACTERISTICS; +typedef CONST struct _NPI_REGISTRATION_INSTANCE * PNPI_REGISTRATION_INSTANCE; + +typedef struct _NPI_REGISTRATION_INSTANCE { + USHORT Version; + USHORT Size; + PNPIID NpiId; + PNPI_MODULEID ModuleId; + ULONG Number; + CONST VOID *NpiSpecificCharacteristics OPTIONAL; +} NPI_REGISTRATION_INSTANCE; + +typedef struct _NPI { + HANDLE Handle; + CONST VOID* Dispatch; +} NPI; + +typedef NTSTATUS +(NTAPI NPI_CLIENT_ATTACH_PROVIDER_FN)( + _In_ HANDLE NmrBindingHandle, + _In_ PVOID ClientContext, + _In_ PNPI_REGISTRATION_INSTANCE ProviderRegistrationInstance); +typedef NPI_CLIENT_ATTACH_PROVIDER_FN *PNPI_CLIENT_ATTACH_PROVIDER_FN; + +typedef NTSTATUS +(NTAPI NPI_CLIENT_DETACH_PROVIDER_FN )( + _In_ PVOID ClientBindingContext); +typedef NPI_CLIENT_DETACH_PROVIDER_FN *PNPI_CLIENT_DETACH_PROVIDER_FN; + +typedef VOID +(NTAPI NPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN)( + _In_ PVOID ClientBindingContext); +typedef NPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN *PNPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN; + +typedef struct _NPI_CLIENT_CHARACTERISTICS { + USHORT Version; + USHORT Length; + PNPI_CLIENT_ATTACH_PROVIDER_FN ClientAttachProvider; + PNPI_CLIENT_DETACH_PROVIDER_FN ClientDetachProvider; + PNPI_CLIENT_CLEANUP_BINDING_CONTEXT_FN ClientCleanupBindingContext; + NPI_REGISTRATION_INSTANCE ClientRegistrationInstance; +} NPI_CLIENT_CHARACTERISTICS; + +typedef NTSTATUS +(NTAPI NPI_PROVIDER_ATTACH_CLIENT_FN)( + _In_ HANDLE NmrBindingHandle, + _In_ PVOID ProviderContext, + _In_ PNPI_REGISTRATION_INSTANCE ClientRegistrationInstance, + _In_ PVOID ClientBindingContext, + _In_ CONST VOID *ClientDispatch, + _Out_ PVOID *ProviderBindingContext, + _Out_ CONST VOID* *ProviderDispatch); +typedef NPI_PROVIDER_ATTACH_CLIENT_FN *PNPI_PROVIDER_ATTACH_CLIENT_FN; + +typedef NTSTATUS +(NTAPI NPI_PROVIDER_DETACH_CLIENT_FN)( + _In_ PVOID ProviderBindingContext); +typedef NPI_PROVIDER_DETACH_CLIENT_FN *PNPI_PROVIDER_DETACH_CLIENT_FN; + +typedef VOID +(NTAPI NPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN)( + _In_ PVOID ProviderBindingContext); +typedef NPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN *PNPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN; + +typedef struct _NPI_PROVIDER_CHARACTERISTICS { + USHORT Version; + USHORT Length; + PNPI_PROVIDER_ATTACH_CLIENT_FN ProviderAttachClient; + PNPI_PROVIDER_DETACH_CLIENT_FN ProviderDetachClient; + PNPI_PROVIDER_CLEANUP_BINDING_CONTEXT_FN ProviderCleanupBindingContext; + NPI_REGISTRATION_INSTANCE ProviderRegistrationInstance; +} NPI_PROVIDER_CHARACTERISTICS; + +NTSTATUS +NmrRegisterClient( + _In_ PNPI_CLIENT_CHARACTERISTICS ClientCharacteristics, + _In_opt_ __drv_aliasesMem PVOID ClientContext, + _Out_ PHANDLE NmrClientHandle); + +NTSTATUS +NmrDeregisterClient( + _In_ HANDLE NmrClientHandle); + +NTSTATUS +NmrWaitForClientDeregisterComplete( + _In_ HANDLE NmrClientHandle); + +NTSTATUS +NmrClientAttachProvider( + _In_ HANDLE NmrBindingHandle, + _In_ __drv_aliasesMem PVOID ClientBindingContext, + _In_ CONST VOID *ClientDispatch, + _Out_ PVOID *ProviderBindingContext, + _Out_ CONST VOID* *ProviderDispatch); + +VOID +NmrClientDetachProviderComplete( + _In_ HANDLE NmrBindingHandle); + +NTSTATUS +NmrRegisterProvider( + _In_ PNPI_PROVIDER_CHARACTERISTICS ProviderCharacteristics, + _In_opt_ __drv_aliasesMem PVOID ProviderContext, + _Out_ PHANDLE NmrProviderHandle); + +NTSTATUS +NmrDeregisterProvider( + _In_ HANDLE NmrProviderHandle); + +NTSTATUS +NmrWaitForProviderDeregisterComplete( + _In_ HANDLE NmrProviderHandle); + +VOID +NmrProviderDetachClientComplete( + _In_ HANDLE NmrBindingHandle); + +#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NETIODDK_ */