178 lines
3.7 KiB
Plaintext
178 lines
3.7 KiB
Plaintext
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
||
|
||
Copyright (c) 1989 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
ntrpc.idl
|
||
|
||
Abstract:
|
||
|
||
This module contains MIDL definitions of many NT data structures that
|
||
allow correct RPC'ing of those data strctures. Note that the primary
|
||
emphasis of this module is to provide definitions that can be typecast
|
||
to for RPC purposes. It is not intended that all fields be present
|
||
or correctly named/represented in these structures.
|
||
|
||
|
||
This file (NTRPC.IDL) is used to generate an include file (NTRPC.H).
|
||
All changes should be made to the .IDL file, not the .H file.
|
||
|
||
|
||
Author:
|
||
|
||
Jim Kelly (JimK) 10-Jun-1991
|
||
|
||
Revision History:
|
||
|
||
|
||
|
||
--*/
|
||
[
|
||
uuid(12345678-1234-ABCD-EF00-0123476518AB), //FIX, FIX Need real uuid
|
||
version(0.0),
|
||
endpoint("mscn_np:[\pipe\ntrpc]"),
|
||
pointer_default(unique)
|
||
]
|
||
|
||
interface ntrpc
|
||
|
||
{
|
||
#ifndef MIDL_PASS
|
||
#define MIDL_PASS
|
||
#endif //MIDL_PASS
|
||
|
||
#ifndef _NTRPC_
|
||
#define _NTRPC_
|
||
|
||
import "ntimp.idl";
|
||
|
||
|
||
|
||
|
||
//
|
||
// Generic RPC Context Handle
|
||
//
|
||
|
||
typedef [context_handle] PVOID RPC_HANDLE, *PRPC_HANDLE;
|
||
|
||
|
||
|
||
//
|
||
// Unicode strings are counted 16-bit character strings.
|
||
// The Length field and MaximumLength fields specify number of bytes,
|
||
// (not wide-characters) in the string. So, this definition differs
|
||
// a bit from the real unicode string type.
|
||
//
|
||
// The Length field does not include a null terminating character
|
||
// if present.
|
||
//
|
||
//
|
||
|
||
typedef struct _RPC_UNICODE_STRING {
|
||
USHORT Length;
|
||
USHORT MaximumLength;
|
||
//FIX FIX [size_is(MaximumLength)] length_is[(MaximumLength)] PCHAR Buffer;
|
||
[size_is(MaximumLength)] PCHAR Buffer;
|
||
} RPC_UNICODE_STRING, *PRPC_UNICODE_STRING;
|
||
|
||
|
||
//
|
||
// ANSI counted string
|
||
//
|
||
|
||
typedef struct _RPC_STRING {
|
||
USHORT Length;
|
||
USHORT MaximumLength;
|
||
//FIX, FIX [size_is(MaximumLength)] length_is[(MaximumLength)] PCHAR Buffer;
|
||
[size_is(MaximumLength)] PCHAR Buffer;
|
||
} RPC_STRING, *PRPC_STRING, RPC_ANSI_STRING, *PRPC_ANSI_STRING;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//
|
||
// RPC definition of the SID structure. Note the use of the [size_is()]
|
||
// qualifier to specify the number of elements in the variable size
|
||
// imbedded SubAuthorityCount array at runtime.
|
||
//
|
||
//
|
||
|
||
typedef struct _RPC_SID {
|
||
UCHAR Revision;
|
||
UCHAR SubAuthorityCount;
|
||
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
|
||
[size_is(SubAuthorityCount)] ULONG SubAuthority[*];
|
||
} RPC_SID, *PRPC_SID, **PPRPC_SID;
|
||
|
||
|
||
|
||
//
|
||
// RPC definition of an ACL. This must be manually maintained to be the same
|
||
// as the real ACL definition in ntseapi.h
|
||
//
|
||
|
||
typedef struct _RPC_ACL {
|
||
UCHAR AclRevision;
|
||
UCHAR Sbz1;
|
||
USHORT AclSize;
|
||
[size_is(AclSize - 4)] UCHAR Dummy1[*];
|
||
} RPC_ACL, *PRPC_ACL;
|
||
|
||
|
||
|
||
|
||
//
|
||
// RPC'able security descriptor definition.
|
||
//
|
||
|
||
typedef struct _RPC_SECURITY_DESCRIPTOR {
|
||
UCHAR Revision;
|
||
UCHAR Sbz1;
|
||
SECURITY_DESCRIPTOR_CONTROL Control;
|
||
PRPC_SID Owner;
|
||
PRPC_SID Group;
|
||
PRPC_ACL Sacl;
|
||
PRPC_ACL Dacl;
|
||
} RPC_SECURITY_DESCRIPTOR, *PRPC_SECURITY_DESCRIPTOR;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//
|
||
// Internal Object Attributes structures. These differ from the regular
|
||
// OBJECT_ATTRIBUTES structures in that the RootDirectory field is an
|
||
// rpc handle.
|
||
//
|
||
//
|
||
|
||
typedef struct _RPC_OBJECT_ATTRIBUTES_U {
|
||
ULONG Length;
|
||
RPC_HANDLE RootDirectory;
|
||
PRPC_UNICODE_STRING ObjectName;
|
||
ULONG Attributes;
|
||
PRPC_SECURITY_DESCRIPTOR SecurityDescriptor;
|
||
PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
|
||
} RPC_OBJECT_ATTRIBUTES_U, *PRPC_OBJECT_ATTRIBUTES_U;
|
||
|
||
typedef struct _RPC_OBJECT_ATTRIBUTES {
|
||
ULONG Length;
|
||
RPC_HANDLE RootDirectory;
|
||
PRPC_STRING ObjectName;
|
||
ULONG Attributes;
|
||
PRPC_SECURITY_DESCRIPTOR SecurityDescriptor;
|
||
PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
|
||
} RPC_OBJECT_ATTRIBUTES, *PRPC_OBJECT_ATTRIBUTES;
|
||
|
||
|
||
|
||
|
||
|
||
#endif // _NTRPC_
|
||
|
||
}
|