summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/ntrpc.idl
blob: 5acfe60fd31347527be84174a502d43a62f61ed8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*++ 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_

}