ms-nfs41-client/dll/options.h

85 lines
3 KiB
C
Raw Normal View History

/* Copyright (c) 2010
* The Regents of the University of Michigan
* All Rights Reserved
*
* Permission is granted to use, copy and redistribute this software
* for noncommercial education and research purposes, so long as no
* fee is charged, and so long as the name of the University of Michigan
* is not used in any advertising or publicity pertaining to the use
* or distribution of this software without specific, written prior
* authorization. Permission to modify or otherwise create derivative
* works of this software is not granted.
*
* This software is provided as is, without representation or warranty
* of any kind either express or implied, including without limitation
* the implied warranties of merchantability, fitness for a particular
* purpose, or noninfringement. The Regents of the University of
* Michigan shall not be liable for any damages, including special,
* indirect, incidental, or consequential damages, with respect to any
* claim arising out of or in connection with the use of the software,
* even if it has been or is hereafter advised of the possibility of
* such damages.
*/
#ifndef __NFS41_NP_OPTIONS_H__
#define __NFS41_NP_OPTIONS_H__
#define MOUNT_OPTION_BUFFER_SECRET ('n4')
/* MOUNT_OPTION_BUFFER
* The mount options buffer received by NPAddConnection3
* via NETRESOURCE.lpComment. To avoid interpreting a normal
* comment string as mount options, a NULL and secret number
* are expected at the front. */
typedef struct _MOUNT_OPTION_BUFFER {
USHORT Zero; /* = 0 */
USHORT Secret; /* = 'n4' */
ULONG Length;
BYTE Buffer[1];
} MOUNT_OPTION_BUFFER, *PMOUNT_OPTION_BUFFER;
/* CONNECTION_BUFFER
* The connection information as sent to the driver via
* IOCTL_NFS41_ADDCONN. The buffer contains the connection name
* followed by any extended attributes for mount options. */
typedef struct _CONNECTION_BUFFER {
USHORT NameLength; /* length of connection filename */
USHORT EaPadding; /* 0-3 bytes of padding to put EaBuffer
* on a ULONG boundary */
ULONG EaLength; /* length of EaBuffer */
BYTE Buffer[1];
} CONNECTION_BUFFER, *PCONNECTION_BUFFER;
/* CONNECTION_INFO
* Used in NPAddConnection3 to encapsulate the formation of
* the connection buffer. */
typedef struct _CONNECTION_INFO {
PMOUNT_OPTION_BUFFER Options;
ULONG BufferSize;
PCONNECTION_BUFFER Buffer;
} CONNECTION_INFO, *PCONNECTION_INFO;
#define MAX_CONNECTION_BUFFER_SIZE(EaSize) ( \
sizeof(CONNECTION_BUFFER) + MAX_PATH + (EaSize) )
/* options.c */
DWORD InitializeConnectionInfo(
IN OUT PCONNECTION_INFO Connection,
IN PMOUNT_OPTION_BUFFER Options,
OUT LPWSTR *ConnectionName);
void FreeConnectionInfo(
IN OUT PCONNECTION_INFO Connection);
/* MarshallConnectionInfo
* Prepares the CONNECTION_BUFFER for transmission to the driver
* by copying the extended attributes into place and updating the
* lengths accordingly. */
void MarshalConnectionInfo(
IN OUT PCONNECTION_INFO Connection);
#endif /* !__NFS41_NP_OPTIONS_H__ */