summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/linkinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/sdk/inc/linkinfo.h')
-rw-r--r--public/sdk/inc/linkinfo.h235
1 files changed, 235 insertions, 0 deletions
diff --git a/public/sdk/inc/linkinfo.h b/public/sdk/inc/linkinfo.h
new file mode 100644
index 000000000..aa8ae35aa
--- /dev/null
+++ b/public/sdk/inc/linkinfo.h
@@ -0,0 +1,235 @@
+/*
+ * linkinfo.h - LinkInfo ADT module description.
+ */
+
+
+#ifndef __LINKINFO_H__
+#define __LINKINFO_H__
+
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++. */
+#endif /* __cplusplus */
+
+
+/* Constants
+ ************/
+
+/* Define API decoration for direct export or import of DLL functions. */
+
+#ifdef _LINKINFO_
+#define LINKINFOAPI
+#else
+#define LINKINFOAPI DECLSPEC_IMPORT
+#endif
+
+
+/* Types
+ ********/
+
+/* LinkInfo structure */
+
+typedef struct _linkinfo
+{
+ /* size of LinkInfo structure, including ucbSize field */
+
+ UINT ucbSize;
+}
+LINKINFO;
+typedef LINKINFO *PLINKINFO;
+typedef const LINKINFO CLINKINFO;
+typedef const LINKINFO *PCLINKINFO;
+
+/* input flags to ResolveLinkInfo() */
+
+typedef enum _resolvelinkinfoinflags
+{
+ /* Set up connection to referent. */
+
+ RLI_IFL_CONNECT = 0x0001,
+
+ /*
+ * Set up temporary connection to referent. May only be set if
+ * RLI_IFL_CONNECT is also set.
+ */
+
+ RLI_IFL_TEMPORARY = 0x0002,
+
+ /* Allow interaction with user. */
+
+ RLI_IFL_ALLOW_UI = 0x0004,
+
+ /* Resolve to redirected local device path. */
+
+ RLI_IFL_REDIRECT = 0x0008,
+
+ /* Update source LinkInfo structure if necessary. */
+
+ RLI_IFL_UPDATE = 0x0010,
+
+ /* Search matching local devices for missing volume. */
+
+ RLI_IFL_LOCAL_SEARCH = 0x0020,
+
+ /* flag combinations */
+
+ ALL_RLI_IFLAGS = (RLI_IFL_CONNECT |
+ RLI_IFL_TEMPORARY |
+ RLI_IFL_ALLOW_UI |
+ RLI_IFL_REDIRECT |
+ RLI_IFL_UPDATE |
+ RLI_IFL_LOCAL_SEARCH)
+}
+RESOLVELINKINFOINFLAGS;
+
+/* output flags from ResolveLinkInfo() */
+
+typedef enum _resolvelinkinfooutflags
+{
+ /*
+ * Only set if RLI_IFL_UPDATE was set in dwInFlags. The source LinkInfo
+ * structure needs updating, and *ppliUpdated points to an updated LinkInfo
+ * structure.
+ */
+
+ RLI_OFL_UPDATED = 0x0001,
+
+ /*
+ * Only set if RLI_IFL_CONNECT was set in dwInFlags. A connection to a net
+ * resource was established to resolve the LinkInfo. DisconnectLinkInfo()
+ * should be called to shut down the connection when the caller is finished
+ * with the remote referent. DisconnectLinkInfo() need not be called if
+ * RLI_IFL_TEMPORARY was also set in dwInFlags.
+ */
+
+ RLI_OFL_DISCONNECT = 0x0002,
+
+ /* flag combinations */
+
+ ALL_RLI_OFLAGS = (RLI_OFL_UPDATED |
+ RLI_OFL_DISCONNECT)
+}
+RESOLVELINKINFOOUTFLAGS;
+
+/* LinkInfo data types used by GetLinkInfo() */
+
+typedef enum _linkinfodatatype
+{
+ /* PCDWORD - pointer to volume's serial number */
+
+ LIDT_VOLUME_SERIAL_NUMBER,
+
+ /* PCUINT - pointer to volume's host drive type */
+
+ LIDT_DRIVE_TYPE,
+
+ /* PCSTR - pointer to volume's label */
+
+ LIDT_VOLUME_LABEL,
+
+ /* PCSTR - pointer to local base path */
+
+ LIDT_LOCAL_BASE_PATH,
+
+ /* PCSTR - pointer to parent network resource's name */
+
+ LIDT_NET_RESOURCE,
+
+ /* PCSTR - pointer to last device redirected to parent network resource */
+
+ LIDT_REDIRECTED_DEVICE,
+
+ /* PCSTR - pointer to common path suffix */
+
+ LIDT_COMMON_PATH_SUFFIX,
+
+ /* PCDWORD - pointer to network type */
+
+ LIDT_NET_TYPE,
+
+ /* PCWSTR - pointer to possible unicode volume label */
+
+ LIDT_VOLUME_LABELW,
+
+ /* PCSTR - pointer to possible unicode parent network resource's name */
+
+ LIDT_NET_RESOURCEW,
+
+ /* PCSTR - pointer to possible unicode last device redirected to parent network resource */
+
+ LIDT_REDIRECTED_DEVICEW,
+
+ /* PCWSTR - pointer to possible unicode local base path */
+
+ LIDT_LOCAL_BASE_PATHW,
+
+ /* PCWSTR - pointer to possible unicode common path suffix */
+
+ LIDT_COMMON_PATH_SUFFIXW
+}
+LINKINFODATATYPE;
+
+/* output flags from GetCanonicalPathInfo() */
+
+typedef enum _getcanonicalpathinfooutflags
+{
+ /* The path is on a remote volume. */
+
+ GCPI_OFL_REMOTE = 0x0001,
+
+ /* flag combinations */
+
+ ALL_GCPI_OFLAGS = GCPI_OFL_REMOTE
+}
+GETCANONICALPATHINFOOUTFLAGS;
+
+
+/* Prototypes
+ *************/
+
+/* LinkInfo APIs */
+
+LINKINFOAPI BOOL WINAPI CreateLinkInfoA(LPCSTR, PLINKINFO *);
+LINKINFOAPI BOOL WINAPI CreateLinkInfoW(LPCWSTR, PLINKINFO *);
+
+#ifdef UNICODE
+#define CreateLinkInfo CreateLinkInfoW
+#else
+#define CreateLinkInfo CreateLinkInfoA
+#endif
+
+LINKINFOAPI void WINAPI DestroyLinkInfo(PLINKINFO);
+LINKINFOAPI int WINAPI CompareLinkInfoReferents(PCLINKINFO, PCLINKINFO);
+LINKINFOAPI int WINAPI CompareLinkInfoVolumes(PCLINKINFO, PCLINKINFO);
+
+LINKINFOAPI BOOL WINAPI ResolveLinkInfoA(PCLINKINFO, LPSTR, DWORD, HWND, PDWORD, PLINKINFO *);
+LINKINFOAPI BOOL WINAPI ResolveLinkInfoW(PCLINKINFO, LPWSTR, DWORD, HWND, PDWORD, PLINKINFO *);
+
+#ifdef UNICODE
+#define ResolveLinkInfo ResolveLinkInfoW
+#else
+#define ResolveLinkInfo ResolveLinkInfoA
+#endif
+
+LINKINFOAPI BOOL WINAPI DisconnectLinkInfo(PCLINKINFO);
+LINKINFOAPI BOOL WINAPI GetLinkInfoData(PCLINKINFO, LINKINFODATATYPE, const VOID **);
+LINKINFOAPI BOOL WINAPI IsValidLinkInfo(PCLINKINFO);
+
+/* canonical path APIs */
+
+LINKINFOAPI BOOL WINAPI GetCanonicalPathInfoA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPSTR *);
+LINKINFOAPI BOOL WINAPI GetCanonicalPathInfoW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPWSTR *);
+
+#ifdef UNICODE
+#define GetCanonicalPathInfo GetCanonicalPathInfoW
+#else
+#define GetCanonicalPathInfo GetCanonicalPathInfoA
+#endif
+
+
+#ifdef __cplusplus
+} /* End of extern "C" {. */
+#endif /* __cplusplus */
+
+
+#endif /* ! __LINKINFO_H__ */