1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms
//! This module defines the DAV specific functions that are exposed to the user
use shared::minwindef::{BOOL, DWORD, LPDWORD, PBYTE, PULONG, ULONG};
use um::winnt::{HANDLE, LPCWSTR, LPWSTR, PVOID, PWSTR};
pub type OPAQUE_HANDLE = DWORD;
STRUCT!{struct DAV_CALLBACK_AUTH_BLOB {
    pBuffer: PVOID,
    ulSize: ULONG,
    ulType: ULONG,
}}
pub type PDAV_CALLBACK_AUTH_BLOB = *mut DAV_CALLBACK_AUTH_BLOB;
STRUCT!{struct DAV_CALLBACK_AUTH_UNP {
    pszUserName: LPWSTR,
    ulUserNameLength: ULONG,
    pszPassword: LPWSTR,
    ulPasswordLength: ULONG,
}}
pub type PDAV_CALLBACK_AUTH_UNP = *mut DAV_CALLBACK_AUTH_UNP;
STRUCT!{struct DAV_CALLBACK_CRED {
    AuthBlob: DAV_CALLBACK_AUTH_BLOB,
    UNPBlob: DAV_CALLBACK_AUTH_UNP,
    bAuthBlobValid: BOOL,
    bSave: BOOL,
}}
pub type PDAV_CALLBACK_CRED = *mut DAV_CALLBACK_CRED;
pub const DAV_AUTHN_SCHEME_BASIC: DWORD = 0x00000001;
pub const DAV_AUTHN_SCHEME_NTLM: DWORD = 0x00000002;
pub const DAV_AUTHN_SCHEME_PASSPORT: DWORD = 0x00000004;
pub const DAV_AUTHN_SCHEME_DIGEST: DWORD = 0x00000008;
pub const DAV_AUTHN_SCHEME_NEGOTIATE: DWORD = 0x00000010;
pub const DAV_AUTHN_SCHEME_CERT: DWORD = 0x00010000;
pub const DAV_AUTHN_SCHEME_FBA: DWORD = 0x00100000;
ENUM!{enum AUTHNEXTSTEP {
    DefaultBehavior,
    RetryRequest,
    CancelRequest,
}}
FN!{stdcall PFNDAVAUTHCALLBACK_FREECRED(
    pbuffer: PVOID,
) -> DWORD}
FN!{stdcall PFNDAVAUTHCALLBACK(
    lpwzServerName: LPWSTR,
    lpwzRemoteName: LPWSTR,
    dwAuthScheme: DWORD,
    dwFlags: DWORD,
    pCallbackCred: PDAV_CALLBACK_CRED,
    NextStep: *mut AUTHNEXTSTEP,
    pFreeCred: *mut PFNDAVAUTHCALLBACK_FREECRED,
) -> DWORD}
extern "system" {
    pub fn DavAddConnection(
        ConnectionHandle: *mut HANDLE,
        RemoteName: LPCWSTR,
        UserName: LPCWSTR,
        Password: LPCWSTR,
        ClientCert: PBYTE,
        CertSize: DWORD,
    ) -> DWORD;
    pub fn DavDeleteConnection(
        ConnectionHandle: HANDLE,
    ) -> DWORD;
    pub fn DavGetUNCFromHTTPPath(
        HttpPath: LPCWSTR,
        UncPath: LPWSTR,
        lpSize: LPDWORD,
    ) -> DWORD;
    pub fn DavGetHTTPFromUNCPath(
        UncPath: LPCWSTR,
        HttpPath: LPWSTR,
        lpSize: LPDWORD,
    ) -> DWORD;
    pub fn DavGetTheLockOwnerOfTheFile(
        FileName: LPCWSTR,
        LockOwnerName: PWSTR,
        LockOwnerNameLengthInBytes: PULONG,
    ) -> DWORD;
    pub fn DavGetExtendedError(
        hFile: HANDLE,
        ExtError: *mut DWORD,
        ExtErrorString: LPWSTR,
        cChSize: *mut DWORD,
    ) -> DWORD;
    pub fn DavFlushFile(
        hFile: HANDLE,
    ) -> DWORD;
    pub fn DavInvalidateCache(
        URLName: LPWSTR,
    ) -> DWORD;
    pub fn DavCancelConnectionsToServer(
        URLName: LPWSTR,
        fForce: BOOL,
    ) -> DWORD;
    pub fn DavRegisterAuthCallback(
        CallBack: PFNDAVAUTHCALLBACK,
        Version: ULONG,
    ) -> OPAQUE_HANDLE;
    pub fn DavUnregisterAuthCallback(
        hCallback: OPAQUE_HANDLE,
    );
}