blob: 9df67c191e995e6d0dd85e54589b85445c2ffa14 [file] [log] [blame] [edit]
// Copyright © 2015, skdltmxn
// Licensed under the MIT License <LICENSE.md>
//! Definitions to be used with the WinSock service provider
pub const WSPDESCRIPTION_LEN: usize = 255;
STRUCT!{nodebug struct WSPDATA {
wVersion: ::WORD,
wHighVersion: ::WORD,
szDescription: [::WCHAR; WSPDESCRIPTION_LEN + 1],
}}
pub type LPWSPDATA = *mut WSPDATA;
STRUCT!{struct WSATHREADID {
ThreadHandle: ::HANDLE,
Reserved: ::DWORD_PTR,
}}
pub type LPWSATHREADID = *mut WSATHREADID;
pub type LPNSPV2STARTUP = Option<unsafe extern "system" fn(
lpProviderId: ::LPGUID, ppvClientSessionArg: *mut ::LPVOID,
) -> ::INT>;
pub type LPNSPV2CLEANUP = Option<unsafe extern "system" fn(
lpProviderId: ::LPGUID, pvClientSessionArg: ::LPVOID,
) -> ::INT>;
pub type LPNSPV2LOOKUPSERVICEBEGIN = Option<unsafe extern "system" fn(
lpProviderId: ::LPGUID, lpqsRestrictions: ::LPWSAQUERYSET2W, dwControlFlags: ::DWORD,
lpvClientSessionArg: ::LPVOID, lphLookup: ::LPHANDLE,
) -> ::INT>;
pub type LPNSPV2LOOKUPSERVICENEXTEX = Option<unsafe extern "system" fn(
hAsyncCall: ::HANDLE, hLookup: ::HANDLE, dwControlFlags: ::DWORD, lpdwBufferLength: ::LPDWORD,
lpqsResults: ::LPWSAQUERYSET2W
)>;
pub type LPNSPV2LOOKUPSERVICEEND = Option<unsafe extern "system" fn(hLookup: ::HANDLE) -> ::INT>;
pub type LPNSPV2SETSERVICEEX = Option<unsafe extern "system" fn(
hAsyncCall: ::HANDLE, lpProviderId: ::LPGUID, lpqsRegInfo: ::LPWSAQUERYSET2W,
essOperation: ::WSAESETSERVICEOP, dwControlFlags: ::DWORD, lpvClientSessionArg: ::LPVOID,
)>;
pub type LPNSPV2CLIENTSESSIONRUNDOWN = Option<unsafe extern "system" fn(
lpProviderId: ::LPGUID, pvClientSessionArg: ::LPVOID,
)>;
STRUCT!{nodebug struct NSPV2_ROUTINE {
cbSize: ::DWORD,
dwMajorVersion: ::DWORD,
dwMinorVersion: ::DWORD,
NSPv2Startup: LPNSPV2STARTUP,
NSPv2Cleanup: LPNSPV2CLEANUP,
NSPv2LookupServiceBegin: LPNSPV2LOOKUPSERVICEBEGIN,
NSPv2LookupServiceNextEx: LPNSPV2LOOKUPSERVICENEXTEX,
NSPv2LookupServiceEnd: LPNSPV2LOOKUPSERVICEEND,
NSPv2SetServiceEx: LPNSPV2SETSERVICEEX,
NSPv2ClientSessionRundown: LPNSPV2CLIENTSESSIONRUNDOWN,
}}
pub type PNSPV2_ROUTINE = *mut NSPV2_ROUTINE;
pub type LPNSPV2_ROUTINE = *mut NSPV2_ROUTINE;
pub type PCNSPV2_ROUTINE = *const NSPV2_ROUTINE;
pub type LPCNSPV2_ROUTINE = *const NSPV2_ROUTINE;
ENUM!{enum WSC_PROVIDER_INFO_TYPE {
ProviderInfoLspCategories,
ProviderInfoAudit,
}}