|
|
//+---------------------------------------------------------------------------
//
// 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;
#ifdef MIDL_PASS
[range(0,32768)] #endif // MIDL_PASS
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 {
#ifdef MIDL_PASS
[range(0,100)] #endif // MIDL_PASS
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 {
#ifdef MIDL_PASS
[range(0,266240)] #endif // MIDL_PASS
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 { #ifdef MIDL_PASS
[range(0,500)] #endif // MIDL_PASS
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 { #ifdef MIDL_PASS
[range(0,500)] #endif // MIDL_PASS
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 CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes );
#ifdef __cplusplus
} // Balance extern "C" above
#endif
#endif // __WINEFS_H__
|