master
  1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6#ifndef _INC_WDSCLIENTAPI
  7#define _INC_WDSCLIENTAPI
  8#include <wdstpdi.h>
  9#if (_WIN32_WINNT >= 0x0600)
 10
 11#ifdef __cplusplus
 12extern "C" {
 13#endif
 14
 15#ifndef WDSTCIAPI
 16#define WDSTCIAPI WINAPI
 17#endif
 18
 19/* Wdstptc.dll is missing an implib because Vista clients don't have the dll to generate it from */
 20
 21typedef VOID (CALLBACK *PFN_WdsTransportClientReceiveContents)(
 22  HANDLE hSessionKey,
 23  PVOID pCallerData,
 24  PVOID pMetadata,
 25  ULONG ulSize,
 26  PULARGE_INTEGER pContentOffset
 27);
 28
 29typedef VOID (CALLBACK *PFN_WdsTransportClientReceiveMetadata)(
 30  HANDLE hSessionKey,
 31  PVOID pCallerData,
 32  PVOID pMetadata,
 33  ULONG ulSize
 34);
 35
 36typedef VOID (CALLBACK *PFN_WdsTransportClientSessionComplete)(
 37  HANDLE hSessionKey,
 38  PVOID pCallerData,
 39  DWORD dwError
 40);
 41
 42typedef VOID (CALLBACK *PFN_WdsTransportClientSessionStart)(
 43  HANDLE hSessionKey,
 44  PVOID pCallerData,
 45  PULARGE_INTEGER FileSize
 46);
 47
 48typedef VOID (CALLBACK *PFN_WdsTransportClientSessionStartEx)(
 49  HANDLE hSessionKey,
 50  PVOID pCallerData,
 51  PTRANSPORTCLIENT_SESSION_INFO Info
 52);
 53
 54typedef enum _TRANSPORTCLIENT_CALLBACK_ID {
 55  WDS_TRANSPORTCLIENT_SESSION_START      = 0,
 56  WDS_TRANSPORTCLIENT_RECEIVE_CONTENTS   = 1,
 57  WDS_TRANSPORTCLIENT_SESSION_COMPLETE   = 2,
 58  WDS_TRANSPORTCLIENT_RECEIVE_METADATA   = 3,
 59  WDS_TRANSPORTCLIENT_SESSION_STARTEX    = 4,
 60  WDS_TRANSPORTCLIENT_MAX_CALLBACKS      = 5 
 61} TRANSPORTCLIENT_CALLBACK_ID,*PTRANSPORTCLIENT_CALLBACK_ID;
 62
 63typedef struct _TRANSPORTCLIENT_SESSION_INFO {
 64  ULONG          ulStructureLength;
 65  ULARGE_INTEGER ullFileSize;
 66  ULONG          ulBlockSize;
 67} TRANSPORTCLIENT_SESSION_INFO, *PTRANSPORTCLIENT_SESSION_INFO;
 68
 69#define WDS_TRANSPORT_CLIENT_CURRENT_API_VERSION 1
 70
 71#define WDS_TRANSPORTCLIENT_AUTH 1
 72#define WDS_TRANSPORTCLIENT_NO_AUTH 2
 73
 74#define WDS_TRANSPORTCLIENT_PROTOCOL_MULTICAST 1
 75
 76typedef struct _WDS_TRANSPORTCLIENT_REQUEST {
 77   ULONG  ulLength;
 78   ULONG  ulApiVersion;
 79   ULONG  ulAuthLevel;
 80  LPCWSTR pwszServer;
 81  LPCWSTR pwszNamespace;
 82  LPCWSTR pwszObjectName;
 83  ULONG   ulCacheSize;
 84  ULONG   ulProtocol;
 85  PVOID   pvProtocolData;
 86  ULONG   ulProtocolDataLength;
 87} WDS_TRANSPORTCLIENT_REQUEST, *PWDS_TRANSPORTCLIENT_REQUEST;
 88
 89DWORD WDSTCIAPI WdsTransportClientStartSession(
 90  HANDLE hSessionKey
 91);
 92
 93DWORD WDSTCIAPI WdsTransportClientAddRefBuffer(
 94  PVOID pvBuffer
 95);
 96
 97DWORD WDSTCIAPI WdsTransportClientCancelSession(
 98  HANDLE hSessionKey
 99);
100
101DWORD WDSTCIAPI WdsTransportClientCloseSession(
102  HANDLE hSessionKey
103);
104
105DWORD WDSTCIAPI WdsTransportClientCompleteReceive(
106  HANDLE hSessionKey,
107  HANDLE ulSize,
108  PULARGE_INTEGER pullOffset
109);
110
111DWORD WDSTCIAPI WdsTransportClientInitialize(void);
112
113DWORD WDSTCIAPI WdsTransportClientInitializeSession(
114  PWDS_TRANSPORTCLIENT_REQUEST pSessionRequest,
115  PVOID pCallerData,
116  PHANDLE hSessionKey
117);
118
119DWORD WDSTCIAPI WdsTransportClientQueryStatus(
120  HANDLE hSessionKey,
121  PULONG puStatus,
122  PULONG puErrorCode
123);
124
125DWORD WDSTCIAPI WdsTransportClientRegisterCallback(
126  HANDLE hSessionKey,
127  TRANSPORTCLIENT_CALLBACK_ID CallbackId,
128  PVOID pfnCallback
129);
130
131DWORD WDSTCIAPI WdsTransportClientReleaseBuffer(
132  PVOID pvBuffer
133);
134
135DWORD WDSTCIAPI WdsTransportClientShutdown(void);
136
137DWORD WDSTCIAPI WdsTransportClientWaitForCompletion(
138  HANDLE hSessionKey,
139  ULONG uTimeout
140);
141
142#ifdef __cplusplus
143}
144#endif
145#endif /*(_WIN32_WINNT >= 0x0600)*/
146#endif /*_INC_WDSCLIENTAPI*/