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*/
147