/* IDL definitions from original packet-dcerpc-efs.c by Jean-Baptiste Marchand */ [ uuid("c681d488-d850-11d0-8c52-00c04fd90f7e"), version(1.0), pointer_default(unique) ] interface efs { WERROR EfsRpcOpenFileRaw( [out,ref] policy_handle *pvContext, [in] unistr FileName, [in] long Flags ); WERROR EfsRpcReadFileRaw( [in,ref] policy_handle *pvContext /* incomplete */ ); WERROR EfsRpcWriteFileRaw( [in,ref] policy_handle *pvContext /* incomplete */ ); void EfsRpcCloseRaw( [in,out,ref] policy_handle *pvContext ); WERROR EfsRpcEncryptFileSrv( [in] unistr Filename ); WERROR EfsRpcDecryptFileSrv( [in] unistr FileName, [in] long Reserved ); typedef struct { long cbData; [size_is(cbData), unique] uint8 *pbData; } EFS_HASH_BLOB; typedef struct { long cbTotalLength; [unique] SID *pUserSid; [unique] EFS_HASH_BLOB *pHash; [unique] unistr *lpDisplayInformation; } ENCRYPTION_CERTIFICATE_HASH; typedef struct { long nCert_Hash; /* this is a pointer to an array of pointers */ [size_is(nCert_Hash)] ENCRYPTION_CERTIFICATE_HASH *pUsers[*]; } ENCRYPTION_CERTIFICATE_HASH_LIST; WERROR EfsRpcQueryUsersOnFile( [in] unistr FileName, [out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers ); WERROR EfsRpcQueryRecoveryAgents( [in] unistr FileName, [out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents ); WERROR EfsRpcRemoveUsersFromFile( [in] unistr FileName /* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/ ); WERROR EfsRpcAddUsersToFile( [in] unistr FileName /* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/ ); typedef struct { long dwCertEncodingType; long cbData; [size_is(cbData)] [unique] uint8 *pbData; } EFS_CERTIFICATE_BLOB; typedef struct { long TotalLength; [unique] SID *pUserSid; [unique] EFS_CERTIFICATE_BLOB *pCertBlob; } ENCRYPTION_CERTIFICATE; WERROR EfsRpcSetFileEncryptionKey( [in] [unique] ENCRYPTION_CERTIFICATE *pEncryptionCertificate ); WERROR EfsRpcNotSupported( ); WERROR EfsRpcFileKeyInfo( ); WERROR EfsRpcDuplicateEncryptionInfoFile( ); }