/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_WDSCLIENTAPI
#define _INC_WDSCLIENTAPI
#include <wdstpdi.h>
#if (_WIN32_WINNT >= 0x0600)
#ifdef __cplusplus
extern "C" {
#endif
#ifndef WDSTCIAPI
#define WDSTCIAPI WINAPI
#endif
/* Wdstptc.dll is missing an implib because Vista clients don't have the dll to generate it from */
typedef VOID (CALLBACK *PFN_WdsTransportClientReceiveContents)(
HANDLE hSessionKey,
PVOID pCallerData,
PVOID pMetadata,
ULONG ulSize,
PULARGE_INTEGER pContentOffset
);
typedef VOID (CALLBACK *PFN_WdsTransportClientReceiveMetadata)(
HANDLE hSessionKey,
PVOID pCallerData,
PVOID pMetadata,
ULONG ulSize
);
typedef VOID (CALLBACK *PFN_WdsTransportClientSessionComplete)(
HANDLE hSessionKey,
PVOID pCallerData,
DWORD dwError
);
typedef VOID (CALLBACK *PFN_WdsTransportClientSessionStart)(
HANDLE hSessionKey,
PVOID pCallerData,
PULARGE_INTEGER FileSize
);
typedef VOID (CALLBACK *PFN_WdsTransportClientSessionStartEx)(
HANDLE hSessionKey,
PVOID pCallerData,
PTRANSPORTCLIENT_SESSION_INFO Info
);
typedef enum _TRANSPORTCLIENT_CALLBACK_ID {
WDS_TRANSPORTCLIENT_SESSION_START = 0,
WDS_TRANSPORTCLIENT_RECEIVE_CONTENTS = 1,
WDS_TRANSPORTCLIENT_SESSION_COMPLETE = 2,
WDS_TRANSPORTCLIENT_RECEIVE_METADATA = 3,
WDS_TRANSPORTCLIENT_SESSION_STARTEX = 4,
WDS_TRANSPORTCLIENT_MAX_CALLBACKS = 5
} TRANSPORTCLIENT_CALLBACK_ID,*PTRANSPORTCLIENT_CALLBACK_ID;
typedef struct _TRANSPORTCLIENT_SESSION_INFO {
ULONG ulStructureLength;
ULARGE_INTEGER ullFileSize;
ULONG ulBlockSize;
} TRANSPORTCLIENT_SESSION_INFO, *PTRANSPORTCLIENT_SESSION_INFO;
#define WDS_TRANSPORT_CLIENT_CURRENT_API_VERSION 1
#define WDS_TRANSPORTCLIENT_AUTH 1
#define WDS_TRANSPORTCLIENT_NO_AUTH 2
#define WDS_TRANSPORTCLIENT_PROTOCOL_MULTICAST 1
typedef struct _WDS_TRANSPORTCLIENT_REQUEST {
ULONG ulLength;
ULONG ulApiVersion;
ULONG ulAuthLevel;
LPCWSTR pwszServer;
LPCWSTR pwszNamespace;
LPCWSTR pwszObjectName;
ULONG ulCacheSize;
ULONG ulProtocol;
PVOID pvProtocolData;
ULONG ulProtocolDataLength;
} WDS_TRANSPORTCLIENT_REQUEST, *PWDS_TRANSPORTCLIENT_REQUEST;
DWORD WDSTCIAPI WdsTransportClientStartSession(
HANDLE hSessionKey
);
DWORD WDSTCIAPI WdsTransportClientAddRefBuffer(
PVOID pvBuffer
);
DWORD WDSTCIAPI WdsTransportClientCancelSession(
HANDLE hSessionKey
);
DWORD WDSTCIAPI WdsTransportClientCloseSession(
HANDLE hSessionKey
);
DWORD WDSTCIAPI WdsTransportClientCompleteReceive(
HANDLE hSessionKey,
HANDLE ulSize,
PULARGE_INTEGER pullOffset
);
DWORD WDSTCIAPI WdsTransportClientInitialize(void);
DWORD WDSTCIAPI WdsTransportClientInitializeSession(
PWDS_TRANSPORTCLIENT_REQUEST pSessionRequest,
PVOID pCallerData,
PHANDLE hSessionKey
);
DWORD WDSTCIAPI WdsTransportClientQueryStatus(
HANDLE hSessionKey,
PULONG puStatus,
PULONG puErrorCode
);
DWORD WDSTCIAPI WdsTransportClientRegisterCallback(
HANDLE hSessionKey,
TRANSPORTCLIENT_CALLBACK_ID CallbackId,
PVOID pfnCallback
);
DWORD WDSTCIAPI WdsTransportClientReleaseBuffer(
PVOID pvBuffer
);
DWORD WDSTCIAPI WdsTransportClientShutdown(void);
DWORD WDSTCIAPI WdsTransportClientWaitForCompletion(
HANDLE hSessionKey,
ULONG uTimeout
);
#ifdef __cplusplus
}
#endif
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_WDSCLIENTAPI*/