windows-nt/Source/XPSP1/NT/public/sdk/inc/winefs.h
2020-09-26 16:20:57 +08:00

234 lines
4.6 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992-1999.
//
// File: winefs.h
//
// Contents: EFS Data and prototypes.
//
//----------------------------------------------------------------------------
#ifndef __WINEFS_H__
#define __WINEFS_H__
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __cplusplus
extern "C" {
#endif
//+---------------------------------------------------------------------------------/
// /
// /
// Data Structures /
// /
// /
//----------------------------------------------------------------------------------/
#ifndef ALGIDDEF
#define ALGIDDEF
typedef unsigned int ALG_ID;
#endif
//
// Encoded Certificate
//
typedef struct _CERTIFICATE_BLOB {
DWORD dwCertEncodingType;
DWORD cbData;
#ifdef MIDL_PASS
[size_is(cbData)]
#endif // MIDL_PASS
PBYTE pbData;
} EFS_CERTIFICATE_BLOB, *PEFS_CERTIFICATE_BLOB;
//
// Certificate Hash
//
typedef struct _EFS_HASH_BLOB {
DWORD cbData;
#ifdef MIDL_PASS
[size_is(cbData)]
#endif // MIDL_PASS
PBYTE pbData;
} EFS_HASH_BLOB, *PEFS_HASH_BLOB;
//
// RPC blob
//
typedef struct _EFS_RPC_BLOB {
DWORD cbData;
#ifdef MIDL_PASS
[size_is(cbData)]
#endif // MIDL_PASS
PBYTE pbData;
} EFS_RPC_BLOB, *PEFS_RPC_BLOB;
typedef struct _EFS_KEY_INFO {
DWORD dwVersion;
ULONG Entropy;
ALG_ID Algorithm;
ULONG KeyLength;
} EFS_KEY_INFO, *PEFS_KEY_INFO;
//
// Input to add a user to an encrypted file
//
typedef struct _ENCRYPTION_CERTIFICATE {
DWORD cbTotalLength;
SID * pUserSid;
PEFS_CERTIFICATE_BLOB pCertBlob;
} ENCRYPTION_CERTIFICATE, *PENCRYPTION_CERTIFICATE;
#define MAX_SID_SIZE 256
typedef struct _ENCRYPTION_CERTIFICATE_HASH {
DWORD cbTotalLength;
SID * pUserSid;
PEFS_HASH_BLOB pHash;
#ifdef MIDL_PASS
[string]
#endif // MIDL_PASS
LPWSTR lpDisplayInformation;
} ENCRYPTION_CERTIFICATE_HASH, *PENCRYPTION_CERTIFICATE_HASH;
typedef struct _ENCRYPTION_CERTIFICATE_HASH_LIST {
DWORD nCert_Hash;
#ifdef MIDL_PASS
[size_is(nCert_Hash)]
#endif // MIDL_PASS
PENCRYPTION_CERTIFICATE_HASH * pUsers;
} ENCRYPTION_CERTIFICATE_HASH_LIST, *PENCRYPTION_CERTIFICATE_HASH_LIST;
typedef struct _ENCRYPTION_CERTIFICATE_LIST {
DWORD nUsers;
#ifdef MIDL_PASS
[size_is(nUsers)]
#endif // MIDL_PASS
PENCRYPTION_CERTIFICATE * pUsers;
} ENCRYPTION_CERTIFICATE_LIST, *PENCRYPTION_CERTIFICATE_LIST;
//+---------------------------------------------------------------------------------/
// /
// /
// Prototypes /
// /
// /
//----------------------------------------------------------------------------------/
WINADVAPI
DWORD
WINAPI
QueryUsersOnEncryptedFile(
IN LPCWSTR lpFileName,
OUT PENCRYPTION_CERTIFICATE_HASH_LIST * pUsers
);
WINADVAPI
DWORD
WINAPI
QueryRecoveryAgentsOnEncryptedFile(
IN LPCWSTR lpFileName,
OUT PENCRYPTION_CERTIFICATE_HASH_LIST * pRecoveryAgents
);
WINADVAPI
DWORD
WINAPI
RemoveUsersFromEncryptedFile(
IN LPCWSTR lpFileName,
IN PENCRYPTION_CERTIFICATE_HASH_LIST pHashes
);
WINADVAPI
DWORD
WINAPI
AddUsersToEncryptedFile(
IN LPCWSTR lpFileName,
IN PENCRYPTION_CERTIFICATE_LIST pUsers
);
WINADVAPI
DWORD
WINAPI
SetUserFileEncryptionKey(
IN PENCRYPTION_CERTIFICATE pEncryptionCertificate
);
WINADVAPI
VOID
WINAPI
FreeEncryptionCertificateHashList(
IN PENCRYPTION_CERTIFICATE_HASH_LIST pHashes
);
WINADVAPI
BOOL
WINAPI
EncryptionDisable(
IN LPCWSTR DirPath,
IN BOOL Disable
);
WINADVAPI
DWORD
WINAPI
DuplicateEncryptionInfoFile(
IN LPCWSTR SrcFileName,
IN LPCWSTR DstFileName,
IN DWORD dwCreationDistribution,
IN DWORD dwAttributes,
IN LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
#ifdef __cplusplus
} // Balance extern "C" above
#endif
#endif // __WINEFS_H__