• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // IPassword.h
2 
3 #ifndef ZIP7_INC_IPASSWORD_H
4 #define ZIP7_INC_IPASSWORD_H
5 
6 #include "../Common/MyTypes.h"
7 
8 #include "IDecl.h"
9 
10 Z7_PURE_INTERFACES_BEGIN
11 
12 #define Z7_IFACE_CONSTR_PASSWORD(i, n) \
13   Z7_DECL_IFACE_7ZIP(i, 5, n) \
14   { Z7_IFACE_COM7_PURE(i) };
15 
16 /*
17 How to use output parameter (BSTR *password):
18 
19 in:  The caller is required to set BSTR value as NULL (no string).
20      The callee (in 7-Zip code) ignores the input value stored in BSTR variable,
21 
22 out: The callee rewrites BSTR variable (*password) with new allocated string pointer.
23      The caller must free BSTR string with function SysFreeString();
24 */
25 
26 #define Z7_IFACEM_ICryptoGetTextPassword(x) \
27   x(CryptoGetTextPassword(BSTR *password))
28 Z7_IFACE_CONSTR_PASSWORD(ICryptoGetTextPassword, 0x10)
29 
30 
31 /*
32 CryptoGetTextPassword2()
33 in:
34   The caller is required to set BSTR value as NULL (no string).
35   The caller is not required to set (*passwordIsDefined) value.
36 
37 out:
38   Return code: != S_OK : error code
39   Return code:    S_OK : success
40 
41   if (*passwordIsDefined == 1), the variable (*password) contains password string
42 
43   if (*passwordIsDefined == 0), the password is not defined,
44      but the callee still could set (*password) to some allocated string, for example, as empty string.
45 
46   The caller must free BSTR string with function SysFreeString()
47 */
48 
49 #define Z7_IFACEM_ICryptoGetTextPassword2(x) \
50   x(CryptoGetTextPassword2(Int32 *passwordIsDefined, BSTR *password))
51 Z7_IFACE_CONSTR_PASSWORD(ICryptoGetTextPassword2, 0x11)
52 
53 Z7_PURE_INTERFACES_END
54 #endif
55