wmi-1.3.16 from opsview.com
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
The IDL files in this directory are made available by the Samba Team
|
||||
under the following license:
|
||||
|
||||
Permission to use, copy, modify, and distribute these interface
|
||||
definitions for any purpose is hereby granted without fee.
|
||||
|
||||
This work is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
atsvc interface definition
|
||||
*/
|
||||
|
||||
[ uuid("1ff70682-0a51-30e8-076d-740be8cee98b"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Microsoft AT-Scheduler Service"),
|
||||
endpoint("ncacn_np:[\\pipe\\atsvc]", "ncalrpc:")
|
||||
] interface atsvc
|
||||
{
|
||||
typedef [bitmap32bit] bitmap {
|
||||
First = 0x00000001,
|
||||
Second = 0x00000002,
|
||||
Third = 0x00000004,
|
||||
Fourth = 0x00000008,
|
||||
Fifth = 0x00000010,
|
||||
Sixth = 0x00000020,
|
||||
Seventh = 0x00000040,
|
||||
Eight = 0x00000080,
|
||||
Ninth = 0x00000100,
|
||||
Tenth = 0x00000200,
|
||||
Eleventh = 0x00000400,
|
||||
Twelfth = 0x00000800,
|
||||
Thitteenth = 0x00001000,
|
||||
Fourteenth = 0x00002000,
|
||||
Fifteenth = 0x00004000,
|
||||
Sixteenth = 0x00008000,
|
||||
Seventeenth = 0x00010000,
|
||||
Eighteenth = 0x00020000,
|
||||
Ninteenth = 0x00040000,
|
||||
Twentyth = 0x00080000,
|
||||
Twentyfirst = 0x00100000,
|
||||
Twentysecond = 0x00200000,
|
||||
Twentythird = 0x00400000,
|
||||
Twentyfourth = 0x00800000,
|
||||
Twentyfifth = 0x01000000,
|
||||
Twentysixth = 0x02000000,
|
||||
Twentyseventh = 0x04000000,
|
||||
Twentyeighth = 0x08000000,
|
||||
Twentyninth = 0x10000000,
|
||||
Thirtieth = 0x20000000,
|
||||
Thirtyfirst = 0x40000000
|
||||
} atsvc_DaysOfMonth;
|
||||
|
||||
typedef [bitmap8bit] bitmap {
|
||||
JOB_RUN_PERIODICALLY = 0x01,
|
||||
JOB_EXEC_ERROR = 0x02,
|
||||
JOB_RUNS_TODAY = 0x04,
|
||||
JOB_ADD_CURRENT_DATE = 0x08,
|
||||
JOB_NONINTERACTIVE = 0x10
|
||||
} atsvc_Flags;
|
||||
|
||||
typedef [bitmap8bit] bitmap {
|
||||
DAYSOFWEEK_MONDAY = 0x01,
|
||||
DAYSOFWEEK_TUESDAY = 0x02,
|
||||
DAYSOFWEEK_WEDNESDAY = 0x04,
|
||||
DAYSOFWEEK_THURSDAY = 0x08,
|
||||
DAYSOFWEEK_FRIDAY = 0x10,
|
||||
DAYSOFWEEK_SATURDAY = 0x20,
|
||||
DAYSOFWEEK_SUNDAY = 0x40
|
||||
} atsvc_DaysOfWeek;
|
||||
|
||||
typedef struct {
|
||||
uint32 job_time;
|
||||
atsvc_DaysOfMonth days_of_month;
|
||||
atsvc_DaysOfWeek days_of_week;
|
||||
atsvc_Flags flags;
|
||||
[string,charset(UTF16)] uint16 *command;
|
||||
} atsvc_JobInfo;
|
||||
|
||||
/******************/
|
||||
/* Function: 0x00 */
|
||||
NTSTATUS atsvc_JobAdd(
|
||||
[in,unique,string,charset(UTF16)] uint16 *servername,
|
||||
[in] atsvc_JobInfo *job_info,
|
||||
[out,ref] uint32 *job_id
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x01 */
|
||||
NTSTATUS atsvc_JobDel(
|
||||
[in,unique,string,charset(UTF16)] uint16 *servername,
|
||||
[in] uint32 min_job_id,
|
||||
[in] uint32 max_job_id
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
uint32 job_id;
|
||||
uint32 job_time;
|
||||
atsvc_DaysOfMonth days_of_month;
|
||||
atsvc_DaysOfWeek days_of_week;
|
||||
atsvc_Flags flags;
|
||||
[string,charset(UTF16)] uint16 *command;
|
||||
} atsvc_JobEnumInfo;
|
||||
|
||||
typedef struct {
|
||||
uint32 entries_read;
|
||||
[size_is(entries_read)] atsvc_JobEnumInfo *first_entry;
|
||||
} atsvc_enum_ctr;
|
||||
|
||||
/******************/
|
||||
/* Function: 0x02 */
|
||||
NTSTATUS atsvc_JobEnum(
|
||||
[in,unique,string,charset(UTF16)] uint16 *servername,
|
||||
[in,out] atsvc_enum_ctr *ctr,
|
||||
[in] uint32 preferred_max_len,
|
||||
[out,ref] uint32 *total_entries,
|
||||
[in,out,unique] uint32 *resume_handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x03 */
|
||||
[public] NTSTATUS atsvc_JobGetInfo(
|
||||
[in,unique,string,charset(UTF16)] uint16 *servername,
|
||||
[in] uint32 job_id,
|
||||
[out] atsvc_JobInfo **job_info
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
[
|
||||
uuid("0a74ef1c-41a4-4e06-83ae-dc74fb1cdd53"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Audio Server")
|
||||
] interface audiosrv
|
||||
{
|
||||
void audiosrv_CreatezoneFactoriesList();
|
||||
void audiosrv_CreateGfxFactoriesList();
|
||||
void audiosrv_CreateGfxList();
|
||||
void audiosrv_RemoveGfx();
|
||||
void audiosrv_AddGfx();
|
||||
void audiosrv_ModifyGfx();
|
||||
void audiosrv_OpenGfx();
|
||||
void audiosrv_Logon();
|
||||
void audiosrv_Logoff();
|
||||
void audiosrv_RegisterSessionNotificationEvent();
|
||||
void audiosrv_UnregisterSessionNotificationEvent();
|
||||
void audiosrv_SessionConnectState();
|
||||
void audiosrv_DriverOpenDrvRegKey();
|
||||
void audiosrv_AdvisePreferredDeviceChange();
|
||||
void audiosrv_GetPnpInfo();
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
[
|
||||
uuid("6bffd098-a112-3610-9833-012892020162"),
|
||||
version(0.0),
|
||||
helpstring("Browsing"),
|
||||
pointer_default(unique),
|
||||
endpoint("ncacn_np:[\\pipe\\browser]", "ncacn_ip_tcp:", "ncalrpc:")
|
||||
]
|
||||
interface browser
|
||||
{
|
||||
/******************/
|
||||
/* Function 0x00 */
|
||||
NTSTATUS BrowserrServerEnum();
|
||||
|
||||
/******************/
|
||||
/* Function 0x01 */
|
||||
NTSTATUS BrowserrDebugCall();
|
||||
|
||||
/******************/
|
||||
/* Function 0x02 */
|
||||
NTSTATUS BrowserrQueryOtherDomains();
|
||||
|
||||
/******************/
|
||||
/* Function 0x03 */
|
||||
NTSTATUS BrowserrResetNetlogonState();
|
||||
|
||||
/******************/
|
||||
/* Function 0x04 */
|
||||
NTSTATUS BrowserrDebugTrace();
|
||||
|
||||
/******************/
|
||||
/* Function 0x05 */
|
||||
NTSTATUS BrowserrQueryStatistics();
|
||||
|
||||
/******************/
|
||||
/* Function 0x06 */
|
||||
NTSTATUS BrowserResetStatistics();
|
||||
|
||||
/******************/
|
||||
/* Function 0x07 */
|
||||
NTSTATUS NetrBrowserStatisticsClear();
|
||||
|
||||
/******************/
|
||||
/* Function 0x08 */
|
||||
NTSTATUS NetrBrowserStatisticsGet();
|
||||
|
||||
/******************/
|
||||
/* Function 0x09 */
|
||||
NTSTATUS BrowserrSetNetlogonState();
|
||||
|
||||
/******************/
|
||||
/* Function 0x0a */
|
||||
NTSTATUS BrowserrQueryEmulatedDomains();
|
||||
|
||||
/******************/
|
||||
/* Function 0x0b */
|
||||
NTSTATUS BrowserrServerEnumEx();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
[
|
||||
uuid("1d55b526-c137-46c5-ab79-638f2a68e869"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Remote IDL debugger")
|
||||
] interface dbgidl
|
||||
{
|
||||
void dummy_dbgidl();
|
||||
}
|
||||
@@ -0,0 +1,302 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
the base dcerpc packet definitions - not traditionally coded as IDL,
|
||||
but given that pidl can handle it nicely it simplifies things a lot
|
||||
to do it this way
|
||||
|
||||
see http://www.opengroup.org/onlinepubs/9629399/chap12.htm for packet
|
||||
layouts
|
||||
*/
|
||||
import "misc.idl";
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface dcerpc
|
||||
{
|
||||
typedef [public] struct {
|
||||
GUID uuid;
|
||||
uint32 if_version;
|
||||
} dcerpc_syntax_id;
|
||||
|
||||
typedef struct {
|
||||
uint16 context_id;
|
||||
uint8 num_transfer_syntaxes;
|
||||
dcerpc_syntax_id abstract_syntax;
|
||||
dcerpc_syntax_id transfer_syntaxes[num_transfer_syntaxes];
|
||||
} dcerpc_ctx_list;
|
||||
|
||||
typedef struct {
|
||||
uint16 max_xmit_frag;
|
||||
uint16 max_recv_frag;
|
||||
uint32 assoc_group_id;
|
||||
uint8 num_contexts;
|
||||
dcerpc_ctx_list ctx_list[num_contexts];
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB auth_info;
|
||||
} dcerpc_bind;
|
||||
|
||||
|
||||
const uint8 DCERPC_REQUEST_LENGTH = 24;
|
||||
const uint8 DCERPC_MAX_SIGN_SIZE = 32;
|
||||
|
||||
typedef struct {
|
||||
} dcerpc_empty;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[default] dcerpc_empty empty;
|
||||
[case(LIBNDR_FLAG_OBJECT_PRESENT)] GUID object;
|
||||
} dcerpc_object;
|
||||
|
||||
typedef struct {
|
||||
uint32 alloc_hint;
|
||||
uint16 context_id;
|
||||
uint16 opnum;
|
||||
[switch_is(ndr->flags & LIBNDR_FLAG_OBJECT_PRESENT)] dcerpc_object object;
|
||||
[flag(NDR_ALIGN8)] DATA_BLOB _pad;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB stub_and_verifier;
|
||||
} dcerpc_request;
|
||||
|
||||
const int DCERPC_BIND_REASON_ASYNTAX = 1;
|
||||
const int DCERPC_BIND_PROVIDER_REJECT = 2;
|
||||
const int DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED = 4;
|
||||
const int DCERPC_BIND_REASON_INVALID_AUTH_TYPE = 8;
|
||||
|
||||
typedef struct {
|
||||
uint16 result;
|
||||
uint16 reason;
|
||||
dcerpc_syntax_id syntax;
|
||||
} dcerpc_ack_ctx;
|
||||
|
||||
typedef struct {
|
||||
uint16 max_xmit_frag;
|
||||
uint16 max_recv_frag;
|
||||
uint32 assoc_group_id;
|
||||
ascstr3 secondary_address;
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad1;
|
||||
uint8 num_results;
|
||||
dcerpc_ack_ctx ctx_list[num_results];
|
||||
[flag(NDR_REMAINING)] DATA_BLOB auth_info;
|
||||
} dcerpc_bind_ack;
|
||||
|
||||
typedef struct {
|
||||
uint32 num_versions;
|
||||
uint32 versions[num_versions];
|
||||
} dcerpc_bind_nak_versions;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED)] dcerpc_bind_nak_versions v;
|
||||
[default] ;
|
||||
} dcerpc_bind_nak_versions_ctr;
|
||||
|
||||
typedef struct {
|
||||
uint16 reject_reason;
|
||||
[switch_is(reject_reason)] dcerpc_bind_nak_versions_ctr versions;
|
||||
} dcerpc_bind_nak;
|
||||
|
||||
const uint8 DCERPC_RESPONSE_LENGTH = 24;
|
||||
|
||||
typedef struct {
|
||||
uint32 alloc_hint;
|
||||
uint16 context_id;
|
||||
uint8 cancel_count;
|
||||
[flag(NDR_ALIGN8)] DATA_BLOB _pad;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB stub_and_verifier;
|
||||
} dcerpc_response;
|
||||
|
||||
|
||||
const int DCERPC_FAULT_OP_RNG_ERROR = 0x1c010002;
|
||||
const int DCERPC_FAULT_UNK_IF = 0x1c010003;
|
||||
const int DCERPC_FAULT_NDR = 0x000006f7;
|
||||
const int DCERPC_FAULT_INVALID_TAG = 0x1c000006;
|
||||
const int DCERPC_FAULT_CONTEXT_MISMATCH = 0x1c00001a;
|
||||
const int DCERPC_FAULT_OTHER = 0x00000001;
|
||||
const int DCERPC_FAULT_ACCESS_DENIED = 0x00000005;
|
||||
const int DCERPC_FAULT_CANT_PERFORM = 0x000006d8;
|
||||
|
||||
/* we return this fault when we haven't yet run the test
|
||||
to see what fault w2k3 returns in this case */
|
||||
const int DCERPC_FAULT_TODO = 0x00000042;
|
||||
|
||||
typedef struct {
|
||||
uint32 alloc_hint;
|
||||
uint16 context_id;
|
||||
uint8 cancel_count;
|
||||
uint32 status;
|
||||
} dcerpc_fault;
|
||||
|
||||
/* the auth types we know about */
|
||||
const uint8 DCERPC_AUTH_TYPE_NONE = 0;
|
||||
/* this seems to be not krb5! */
|
||||
const uint8 DCERPC_AUTH_TYPE_KRB5_1 = 1;
|
||||
const uint8 DCERPC_AUTH_TYPE_SPNEGO = 9;
|
||||
const uint8 DCERPC_AUTH_TYPE_NTLMSSP = 10;
|
||||
/* I'm not 100% sure but type 16(0x10)
|
||||
* seems to be raw krb5 --metze
|
||||
*/
|
||||
const uint8 DCERPC_AUTH_TYPE_KRB5 = 16;
|
||||
const uint8 DCERPC_AUTH_TYPE_SCHANNEL = 68;
|
||||
const uint8 DCERPC_AUTH_TYPE_MSMQ = 100;
|
||||
|
||||
const uint8 DCERPC_AUTH_LEVEL_DEFAULT = DCERPC_AUTH_LEVEL_CONNECT;
|
||||
const uint8 DCERPC_AUTH_LEVEL_NONE = 1;
|
||||
const uint8 DCERPC_AUTH_LEVEL_CONNECT = 2;
|
||||
const uint8 DCERPC_AUTH_LEVEL_CALL = 3;
|
||||
const uint8 DCERPC_AUTH_LEVEL_PACKET = 4;
|
||||
const uint8 DCERPC_AUTH_LEVEL_INTEGRITY = 5;
|
||||
const uint8 DCERPC_AUTH_LEVEL_PRIVACY = 6;
|
||||
|
||||
typedef [public] struct {
|
||||
uint8 auth_type;
|
||||
uint8 auth_level;
|
||||
uint8 auth_pad_length;
|
||||
uint8 auth_reserved;
|
||||
uint32 auth_context_id;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB credentials;
|
||||
} dcerpc_auth;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 _pad;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB auth_info;
|
||||
} dcerpc_auth3;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 _pad;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB auth_info;
|
||||
} dcerpc_orphaned;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 _pad;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB auth_info;
|
||||
} dcerpc_co_cancel;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 version;
|
||||
uint32 id;
|
||||
} dcerpc_cl_cancel;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 version;
|
||||
uint32 id;
|
||||
boolean32 server_is_accepting;
|
||||
} dcerpc_cancel_ack;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 version;
|
||||
uint8 _pad1;
|
||||
uint16 window_size;
|
||||
uint32 max_tdsu;
|
||||
uint32 max_frag_size;
|
||||
uint16 serial_no;
|
||||
uint16 selack_size;
|
||||
uint32 selack[selack_size];
|
||||
} dcerpc_fack;
|
||||
|
||||
typedef [public] struct {
|
||||
} dcerpc_ack;
|
||||
|
||||
typedef [public] struct {
|
||||
} dcerpc_ping;
|
||||
|
||||
typedef [public] struct {
|
||||
} dcerpc_shutdown;
|
||||
|
||||
typedef [public] struct {
|
||||
} dcerpc_working;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
DCERPC_PKT_REQUEST = 0,
|
||||
DCERPC_PKT_PING = 1,
|
||||
DCERPC_PKT_RESPONSE = 2,
|
||||
DCERPC_PKT_FAULT = 3,
|
||||
DCERPC_PKT_WORKING = 4,
|
||||
DCERPC_PKT_NOCALL = 5,
|
||||
DCERPC_PKT_REJECT = 6,
|
||||
DCERPC_PKT_ACK = 7,
|
||||
DCERPC_PKT_CL_CANCEL = 8,
|
||||
DCERPC_PKT_FACK = 9,
|
||||
DCERPC_PKT_CANCEL_ACK = 10,
|
||||
DCERPC_PKT_BIND = 11,
|
||||
DCERPC_PKT_BIND_ACK = 12,
|
||||
DCERPC_PKT_BIND_NAK = 13,
|
||||
DCERPC_PKT_ALTER = 14,
|
||||
DCERPC_PKT_ALTER_RESP = 15,
|
||||
DCERPC_PKT_AUTH3 = 16,
|
||||
DCERPC_PKT_SHUTDOWN = 17,
|
||||
DCERPC_PKT_CO_CANCEL = 18,
|
||||
DCERPC_PKT_ORPHANED = 19
|
||||
} dcerpc_pkt_type;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(DCERPC_PKT_REQUEST)] dcerpc_request request;
|
||||
[case(DCERPC_PKT_PING)] dcerpc_ping ping;
|
||||
[case(DCERPC_PKT_RESPONSE)] dcerpc_response response;
|
||||
[case(DCERPC_PKT_FAULT)] dcerpc_fault fault;
|
||||
[case(DCERPC_PKT_WORKING)] dcerpc_working working;
|
||||
[case(DCERPC_PKT_NOCALL)] dcerpc_fack nocall;
|
||||
[case(DCERPC_PKT_REJECT)] dcerpc_fault reject;
|
||||
[case(DCERPC_PKT_ACK)] dcerpc_ack ack;
|
||||
[case(DCERPC_PKT_CL_CANCEL)] dcerpc_cl_cancel cl_cancel;
|
||||
[case(DCERPC_PKT_FACK)] dcerpc_fack fack;
|
||||
[case(DCERPC_PKT_CANCEL_ACK)] dcerpc_cancel_ack cancel_ack;
|
||||
[case(DCERPC_PKT_BIND)] dcerpc_bind bind;
|
||||
[case(DCERPC_PKT_BIND_ACK)] dcerpc_bind_ack bind_ack;
|
||||
[case(DCERPC_PKT_BIND_NAK)] dcerpc_bind_nak bind_nak;
|
||||
[case(DCERPC_PKT_ALTER)] dcerpc_bind alter;
|
||||
[case(DCERPC_PKT_ALTER_RESP)] dcerpc_bind_ack alter_resp;
|
||||
[case(DCERPC_PKT_SHUTDOWN)] dcerpc_shutdown shutdown;
|
||||
[case(DCERPC_PKT_CO_CANCEL)] dcerpc_co_cancel co_cancel;
|
||||
[case(DCERPC_PKT_ORPHANED)] dcerpc_orphaned orphaned;
|
||||
[case(DCERPC_PKT_AUTH3)] dcerpc_auth3 auth3;
|
||||
} dcerpc_payload;
|
||||
|
||||
/* pfc_flags values */
|
||||
const uint8 DCERPC_PFC_FLAG_FIRST = 0x01;
|
||||
const uint8 DCERPC_PFC_FLAG_LAST = 0x02;
|
||||
const uint8 DCERPC_PFC_FLAG_NOCALL = 0x20;
|
||||
const uint8 DCERPC_PFC_FLAG_ORPC = 0x80;
|
||||
|
||||
/* these offsets are needed by the signing code */
|
||||
const uint8 DCERPC_DREP_OFFSET = 4;
|
||||
const uint8 DCERPC_FRAG_LEN_OFFSET = 8;
|
||||
const uint8 DCERPC_AUTH_LEN_OFFSET = 10;
|
||||
|
||||
/* little-endian flag */
|
||||
const uint8 DCERPC_DREP_LE = 0x10;
|
||||
|
||||
typedef [public] struct {
|
||||
uint8 rpc_vers; /* RPC version */
|
||||
uint8 rpc_vers_minor; /* Minor version */
|
||||
dcerpc_pkt_type ptype; /* Packet type */
|
||||
uint8 pfc_flags; /* Fragmentation flags */
|
||||
uint8 drep[4]; /* NDR data representation */
|
||||
uint16 frag_length; /* Total length of fragment */
|
||||
uint16 auth_length; /* authenticator length */
|
||||
uint32 call_id; /* Call identifier */
|
||||
[switch_is(ptype)] dcerpc_payload u;
|
||||
} ncacn_packet;
|
||||
|
||||
typedef [public] struct {
|
||||
uint8 rpc_vers; /* RPC version (4) */
|
||||
uint8 ptype;
|
||||
uint8 pfc_flags;
|
||||
uint8 ncadg_flags;
|
||||
uint8 drep[3];
|
||||
uint8 serial_high;
|
||||
GUID object;
|
||||
GUID iface;
|
||||
GUID activity;
|
||||
uint32 server_boot; /* Server boot time */
|
||||
uint32 iface_version;
|
||||
uint32 seq_num;
|
||||
uint16 opnum;
|
||||
uint16 ihint;
|
||||
uint16 ahint;
|
||||
uint16 len;
|
||||
uint16 fragnum;
|
||||
uint8 auth_proto;
|
||||
uint8 serial_low;
|
||||
[switch_is(ptype)] dcerpc_payload u;
|
||||
} ncadg_packet;
|
||||
}
|
||||
@@ -0,0 +1,301 @@
|
||||
/**
|
||||
DCOM interfaces
|
||||
http://www.ietf.org/internet-drafts/draft-brown-dcom-v1-spec-04.txt
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("18f70770-8e64-11cf-9af1-0020af6e72f4"),
|
||||
pointer_default(unique),
|
||||
version(0.0)
|
||||
] interface dcom_Unknown
|
||||
{
|
||||
void UseProtSeq();
|
||||
void GetCustomProtseqInfo();
|
||||
void UpdateResolverBindings();
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid("00000000-0000-0000-C000-000000000046"),
|
||||
pointer_default(unique),
|
||||
helpstring("Base interface for all COM interfaces")
|
||||
]
|
||||
interface IUnknown
|
||||
{
|
||||
/*****************/
|
||||
/* Function 0x00 */
|
||||
/* Returns the interface with the specified IID
|
||||
if implemented by this object */
|
||||
[local] WERROR QueryInterface([in,unique] GUID *iid,
|
||||
[out,iid_is(riid)] IUnknown **data);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x01 */
|
||||
[local] uint32 AddRef();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x02 */
|
||||
[local] uint32 Release();
|
||||
}
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
uuid("00000001-0000-0000-C000-000000000046"),
|
||||
pointer_default(unique)
|
||||
] interface IClassFactory : IUnknown
|
||||
{
|
||||
[local] WERROR CreateInstance([in,unique] MInterfacePointer *pUnknown,
|
||||
[in,unique] GUID *iid,
|
||||
[out, iid_is(riid)] MInterfacePointer **ppv);
|
||||
|
||||
[call_as(CreateInstance)] WERROR RemoteCreateInstance();
|
||||
|
||||
/* Set lock to TRUE when you want to do a lock
|
||||
and set it to FALSE when you want to unlock */
|
||||
[local] WERROR LockServer([in] uint8 lock);
|
||||
|
||||
[call_as(LockServer)] WERROR RemoteLockServer();
|
||||
}
|
||||
|
||||
/* The remote version of IUnknown. This interface exists on every */
|
||||
/* OXID (whether an OXID represents either a thread or a process is */
|
||||
/* implementation specific). It is used by clients to query for new */
|
||||
/* interfaces, get additional references (for marshaling), and release */
|
||||
/* outstanding references. */
|
||||
/* This interface is passed along during OXID resolution. */
|
||||
/* */
|
||||
[
|
||||
uuid("00000131-0000-0000-C000-000000000046"),
|
||||
object,
|
||||
pointer_default(unique),
|
||||
helpstring("Remote version of IUnknown")
|
||||
]
|
||||
interface IRemUnknown : IUnknown
|
||||
{
|
||||
typedef [public] struct
|
||||
{
|
||||
WERROR hResult; /* result of call */
|
||||
STDOBJREF std; /* data for returned interface */
|
||||
}
|
||||
REMQIRESULT;
|
||||
|
||||
[call_as(QueryInterface)] WERROR RemQueryInterface (
|
||||
[in] GUID *ripid, /* interface to QI on */
|
||||
[in] uint32 cRefs, /* count of AddRefs requested */
|
||||
[in] uint16 cIids, /* count of IIDs that follow */
|
||||
[in, size_is(cIids)] GUID iids[], /* IIDs to QI for */
|
||||
[out,ref,size_is(,cIids)] REMQIRESULT **rqir
|
||||
);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GUID ipid; /* ipid to AddRef/Release */
|
||||
uint32 cPublicRefs;
|
||||
uint32 cPrivateRefs;
|
||||
} REMINTERFACEREF;
|
||||
|
||||
[call_as(AddRef)] WERROR RemAddRef (
|
||||
[in] uint16 cInterfaceRefs,
|
||||
[in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[],
|
||||
[out, size_is(cInterfaceRefs)] WERROR **pResults
|
||||
);
|
||||
|
||||
[call_as(Release)] WERROR RemRelease (
|
||||
[in] uint16 cInterfaceRefs,
|
||||
[in, size_is(cInterfaceRefs)] REMINTERFACEREF InterfaceRefs[]
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
uuid("00000140-0000-0000-c000-000000000046"),
|
||||
pointer_default(unique),
|
||||
object
|
||||
] interface IClassActivator : IUnknown
|
||||
{
|
||||
void GetClassObject([in] GUID clsid,
|
||||
[in] uint32 context,
|
||||
[in] uint32 locale,
|
||||
[in] GUID iid,
|
||||
[out, iid_is(iid)] MInterfacePointer *data);
|
||||
}
|
||||
|
||||
[
|
||||
uuid("00000136-0000-0000-c000-000000000046"),
|
||||
pointer_default(unique),
|
||||
object
|
||||
] interface ISCMLocalActivator : IClassActivator
|
||||
{
|
||||
WERROR ISCMLocalActivator_CreateInstance( );
|
||||
}
|
||||
|
||||
[
|
||||
pointer_default(unique),
|
||||
uuid("c6f3ee72-ce7e-11d1-b71e-00c04fc3111a")
|
||||
] interface IMachineLocalActivator
|
||||
{
|
||||
WERROR IMachineLocalActivator_foo();
|
||||
}
|
||||
|
||||
[
|
||||
pointer_default(unique),
|
||||
uuid("e60c73e6-88f9-11cf-9af1-0020af6e72f4")
|
||||
] interface ILocalObjectExporter
|
||||
{
|
||||
WERROR ILocalObjectExporter_Foo();
|
||||
}
|
||||
|
||||
/* Looks like this is the equivalent of .NET's
|
||||
System.Activator class */
|
||||
[
|
||||
uuid("000001a0-0000-0000-c000-000000000046"),
|
||||
pointer_default(unique),
|
||||
object
|
||||
]
|
||||
interface ISystemActivator : IClassActivator
|
||||
{
|
||||
WERROR ISystemActivatorRemoteCreateInstance([in] hyper unknown1, /* OXID ? */
|
||||
[in] MInterfacePointer iface1,
|
||||
[in] hyper unknown2,
|
||||
[out,ref] uint32 *unknown3,
|
||||
[out,ref] MInterfacePointer *iface2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Derived from IRemUnknown, this interface supports Remote Query interface */
|
||||
/* for objects that supply additional data beyond the STDOBJREF in their */
|
||||
/* marshaled interface packets. */
|
||||
[
|
||||
object,
|
||||
pointer_default(unique),
|
||||
uuid("00000143-0000-0000-C000-000000000046")
|
||||
]
|
||||
|
||||
interface IRemUnknown2 : IRemUnknown
|
||||
{
|
||||
[call_as(QueryInterface2)] WERROR RemQueryInterface2 (
|
||||
[in, unique] GUID *ripid,
|
||||
[in] uint16 cIids,
|
||||
[in, size_is(cIids)] GUID **iids,
|
||||
[out, size_is(cIids)] WERROR **phr,
|
||||
[out, size_is(cIids)] MInterfacePointer **ppMIF
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
pointer_default(unique),
|
||||
uuid("00020400-0000-0000-C000-000000000046")
|
||||
] interface IDispatch : IUnknown
|
||||
{
|
||||
/*****************/
|
||||
/* Function 0x03 */
|
||||
WERROR GetTypeInfoCount([out] uint16 *pctinfo);
|
||||
|
||||
typedef struct {
|
||||
} REF_ITypeInfo;
|
||||
|
||||
/*****************/
|
||||
/* Function 0x04 */
|
||||
WERROR GetTypeInfo (
|
||||
[in] uint16 iTInfo,
|
||||
[in] uint32 lcid,
|
||||
[out] REF_ITypeInfo **ppTInfo);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x05 */
|
||||
WERROR GetIDsOfNames(
|
||||
[in, unique] GUID *riid,
|
||||
/*FIXME[in,size_is(cNames)] OLESTR *rgszNames[], */
|
||||
[in] uint16 cNames,
|
||||
[in] uint32 lcid,
|
||||
[out,size_is(cNames)] uint32 **rgDispId);
|
||||
|
||||
typedef struct {
|
||||
uint16 vartype;
|
||||
uint16 unknown /* FIXME */;
|
||||
} VARIANT;
|
||||
|
||||
typedef struct {
|
||||
uint16 unknown /* FIXME */;
|
||||
} DISPPARAMS;
|
||||
|
||||
/* Exception ? */
|
||||
typedef struct {
|
||||
uint16 unknown /* FIXME */;
|
||||
} EXCEPINFO;
|
||||
|
||||
/*****************/
|
||||
/* Function 0x06 */
|
||||
WERROR Invoke(
|
||||
[in] uint32 dispIdMember,
|
||||
[in, unique] GUID *riid,
|
||||
[in] uint32 lcid,
|
||||
[in] uint16 wFlags,
|
||||
[out,in, unique] DISPPARAMS *pDispParams,
|
||||
[out] VARIANT **pVarResult,
|
||||
[out] EXCEPINFO **pExcepInfo,
|
||||
[out] uint16 **puArgErr);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid("00000003-0000-0000-C000-000000000046")
|
||||
] interface IMarshal : IUnknown
|
||||
{
|
||||
WERROR MarshalInterface();
|
||||
WERROR UnMarshalInterface();
|
||||
}
|
||||
|
||||
[
|
||||
uuid(DA23F6DB-6F45-466C-9EED-0B65286F2D78),
|
||||
helpstring("ICoffeeMachine Interface"),
|
||||
pointer_default(unique),
|
||||
object
|
||||
] interface ICoffeeMachine : IUnknown
|
||||
{
|
||||
WERROR MakeCoffee([in,string,charset(UTF16)] uint16 *flavor);
|
||||
}
|
||||
|
||||
[
|
||||
uuid("db7c21f8-fe33-4c11-aea5-ceb56f076fbb"),
|
||||
helpstring("coffeemachine class")
|
||||
] coclass coffeemachine
|
||||
{
|
||||
interface icoffeemachine;
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
pointer_default(unique),
|
||||
uuid("0000000C-0000-0000-C000-000000000046"),
|
||||
helpstring("Stream")
|
||||
]
|
||||
interface IStream : IUnknown
|
||||
{
|
||||
WERROR Read(
|
||||
[out, size_is(num_requested), length_is(*num_read)] uint8 pv[],
|
||||
[in] uint32 num_requested,
|
||||
[in, unique] uint32 *num_readx,
|
||||
[out,ref] uint32 *num_read
|
||||
);
|
||||
|
||||
WERROR Write(
|
||||
[in,size_is(num_requested),unique] uint8 *data,
|
||||
[in] uint32 num_requested,
|
||||
[out,ref] uint32 *num_written);
|
||||
}
|
||||
|
||||
[
|
||||
uuid("5e9ddec7-5767-11cf-beab-00aa006c3606"),
|
||||
progid("Samba.Simple"),
|
||||
helpstring("simple class"),
|
||||
internal
|
||||
] coclass simple
|
||||
{
|
||||
interface IStream;
|
||||
}
|
||||
|
||||
#include "dcom_wmi.inc"
|
||||
@@ -0,0 +1,863 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
[
|
||||
uuid("8BC3F05E-D86B-11d0-A075-00C04FB68820")
|
||||
] coclass WbemLevel1Login
|
||||
{
|
||||
interface IWbemLevel1Login;
|
||||
};
|
||||
|
||||
[local, object, uuid("dc12a681-737f-11cf-884d-00aa004b2e24")]
|
||||
|
||||
interface IWbemClassObject : IUnknown
|
||||
{
|
||||
WERROR Delete(
|
||||
[in, string, charset(UTF16)] uint16 *wszName
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
[
|
||||
uuid("9556dc99-828c-11cf-a37e-00aa003240c7"),
|
||||
object,
|
||||
pointer_default(unique)
|
||||
] interface IWbemServices : IUnknown
|
||||
{
|
||||
typedef [v1_enum] enum
|
||||
{
|
||||
RPC_S_CALL_FAILED = 1726,
|
||||
|
||||
WBEM_NO_ERROR = 0,
|
||||
WBEM_S_NO_ERROR = 0,
|
||||
WBEM_S_SAME = 0,
|
||||
WBEM_S_FALSE = 1,
|
||||
WBEM_S_ALREADY_EXISTS = 0x40001,
|
||||
WBEM_S_RESET_TO_DEFAULT = 0x40002,
|
||||
WBEM_S_DIFFERENT = 0x40003,
|
||||
WBEM_S_TIMEDOUT = 0x40004,
|
||||
WBEM_S_NO_MORE_DATA = 0x40005,
|
||||
WBEM_S_OPERATION_CANCELLED = 0x40006,
|
||||
WBEM_S_PENDING = 0x40007,
|
||||
WBEM_S_DUPLICATE_OBJECTS = 0x40008,
|
||||
WBEM_S_ACCESS_DENIED = 0x40009,
|
||||
WBEM_S_PARTIAL_RESULTS = 0x40010,
|
||||
WBEM_S_NO_POSTHOOK = 0x40011,
|
||||
WBEM_S_POSTHOOK_WITH_BOTH = 0x40012,
|
||||
WBEM_S_POSTHOOK_WITH_NEW = 0x40013,
|
||||
WBEM_S_POSTHOOK_WITH_STATUS = 0x40014,
|
||||
WBEM_S_POSTHOOK_WITH_OLD = 0x40015,
|
||||
WBEM_S_REDO_PREHOOK_WITH_ORIGINAL_OBJECT = 0x40016,
|
||||
WBEM_S_SOURCE_NOT_AVAILABLE = 0x40017,
|
||||
WBEM_E_FAILED = 0x80041001,
|
||||
WBEM_E_NOT_FOUND = 0x80041002,
|
||||
WBEM_E_ACCESS_DENIED = 0x80041003,
|
||||
WBEM_E_PROVIDER_FAILURE = 0x80041004,
|
||||
WBEM_E_TYPE_MISMATCH = 0x80041005,
|
||||
WBEM_E_OUT_OF_MEMORY = 0x80041006,
|
||||
WBEM_E_INVALID_CONTEXT = 0x80041007,
|
||||
WBEM_E_INVALID_PARAMETER = 0x80041008,
|
||||
WBEM_E_NOT_AVAILABLE = 0x80041009,
|
||||
WBEM_E_CRITICAL_ERROR = 0x8004100A,
|
||||
WBEM_E_INVALID_STREAM = 0x8004100B,
|
||||
WBEM_E_NOT_SUPPORTED = 0x8004100C,
|
||||
WBEM_E_INVALID_SUPERCLASS = 0x8004100D,
|
||||
WBEM_E_INVALID_NAMESPACE = 0x8004100E,
|
||||
WBEM_E_INVALID_OBJECT = 0x8004100F,
|
||||
WBEM_E_INVALID_CLASS = 0x80041010,
|
||||
WBEM_E_PROVIDER_NOT_FOUND = 0x80041011,
|
||||
WBEM_E_INVALID_PROVIDER_REGISTRATION = 0x80041012,
|
||||
WBEM_E_PROVIDER_LOAD_FAILURE = 0x80041013,
|
||||
WBEM_E_INITIALIZATION_FAILURE = 0x80041014,
|
||||
WBEM_E_TRANSPORT_FAILURE = 0x80041015,
|
||||
WBEM_E_INVALID_OPERATION = 0x80041016,
|
||||
WBEM_E_INVALID_QUERY = 0x80041017,
|
||||
WBEM_E_INVALID_QUERY_TYPE = 0x80041018,
|
||||
WBEM_E_ALREADY_EXISTS = 0x80041019,
|
||||
WBEM_E_OVERRIDE_NOT_ALLOWED = 0x8004101A,
|
||||
WBEM_E_PROPAGATED_QUALIFIER = 0x8004101B,
|
||||
WBEM_E_PROPAGATED_PROPERTY = 0x8004101C,
|
||||
WBEM_E_UNEXPECTED = 0x8004101D,
|
||||
WBEM_E_ILLEGAL_OPERATION = 0x8004101E,
|
||||
WBEM_E_CANNOT_BE_KEY = 0x8004101F,
|
||||
WBEM_E_INCOMPLETE_CLASS = 0x80041020,
|
||||
WBEM_E_INVALID_SYNTAX = 0x80041021,
|
||||
WBEM_E_NONDECORATED_OBJECT = 0x80041022,
|
||||
WBEM_E_READ_ONLY = 0x80041023,
|
||||
WBEM_E_PROVIDER_NOT_CAPABLE = 0x80041024,
|
||||
WBEM_E_CLASS_HAS_CHILDREN = 0x80041025,
|
||||
WBEM_E_CLASS_HAS_INSTANCES = 0x80041026,
|
||||
WBEM_E_QUERY_NOT_IMPLEMENTED = 0x80041027,
|
||||
WBEM_E_ILLEGAL_NULL = 0x80041028,
|
||||
WBEM_E_INVALID_QUALIFIER_TYPE = 0x80041029,
|
||||
WBEM_E_INVALID_PROPERTY_TYPE = 0x8004102A,
|
||||
WBEM_E_VALUE_OUT_OF_RANGE = 0x8004102B,
|
||||
WBEM_E_CANNOT_BE_SINGLETON = 0x8004102C,
|
||||
WBEM_E_INVALID_CIM_TYPE = 0x8004102D,
|
||||
WBEM_E_INVALID_METHOD = 0x8004102E,
|
||||
WBEM_E_INVALID_METHOD_PARAMETERS = 0x8004102F,
|
||||
WBEM_E_SYSTEM_PROPERTY = 0x80041030,
|
||||
WBEM_E_INVALID_PROPERTY = 0x80041031,
|
||||
WBEM_E_CALL_CANCELLED = 0x80041032,
|
||||
WBEM_E_SHUTTING_DOWN = 0x80041033,
|
||||
WBEM_E_PROPAGATED_METHOD = 0x80041034,
|
||||
WBEM_E_UNSUPPORTED_PARAMETER = 0x80041035,
|
||||
WBEM_E_MISSING_PARAMETER_ID = 0x80041036,
|
||||
WBEM_E_INVALID_PARAMETER_ID = 0x80041037,
|
||||
WBEM_E_NONCONSECUTIVE_PARAMETER_IDS = 0x80041038,
|
||||
WBEM_E_PARAMETER_ID_ON_RETVAL = 0x80041039,
|
||||
WBEM_E_INVALID_OBJECT_PATH = 0x8004103A,
|
||||
WBEM_E_OUT_OF_DISK_SPACE = 0x8004103B,
|
||||
WBEM_E_BUFFER_TOO_SMALL = 0x8004103C,
|
||||
WBEM_E_UNSUPPORTED_PUT_EXTENSION = 0x8004103D,
|
||||
WBEM_E_UNKNOWN_OBJECT_TYPE = 0x8004103E,
|
||||
WBEM_E_UNKNOWN_PACKET_TYPE = 0x8004103F,
|
||||
WBEM_E_MARSHAL_VERSION_MISMATCH = 0x80041040,
|
||||
WBEM_E_MARSHAL_INVALID_SIGNATURE = 0x80041041,
|
||||
WBEM_E_INVALID_QUALIFIER = 0x80041042,
|
||||
WBEM_E_INVALID_DUPLICATE_PARAMETER = 0x80041043,
|
||||
WBEM_E_TOO_MUCH_DATA = 0x80041044,
|
||||
WBEM_E_SERVER_TOO_BUSY = 0x80041045,
|
||||
WBEM_E_INVALID_FLAVOR = 0x80041046,
|
||||
WBEM_E_CIRCULAR_REFERENCE = 0x80041047,
|
||||
WBEM_E_UNSUPPORTED_CLASS_UPDATE = 0x80041048,
|
||||
WBEM_E_CANNOT_CHANGE_KEY_INHERITANCE = 0x80041049,
|
||||
WBEM_E_CANNOT_CHANGE_INDEX_INHERITANCE = 0x80041050,
|
||||
WBEM_E_TOO_MANY_PROPERTIES = 0x80041051,
|
||||
WBEM_E_UPDATE_TYPE_MISMATCH = 0x80041052,
|
||||
WBEM_E_UPDATE_OVERRIDE_NOT_ALLOWED = 0x80041053,
|
||||
WBEM_E_UPDATE_PROPAGATED_METHOD = 0x80041054,
|
||||
WBEM_E_METHOD_NOT_IMPLEMENTED = 0x80041055,
|
||||
WBEM_E_METHOD_DISABLED = 0x80041056,
|
||||
WBEM_E_REFRESHER_BUSY = 0x80041057,
|
||||
WBEM_E_UNPARSABLE_QUERY = 0x80041058,
|
||||
WBEM_E_NOT_EVENT_CLASS = 0x80041059,
|
||||
WBEM_E_MISSING_GROUP_WITHIN = 0x8004105A,
|
||||
WBEM_E_MISSING_AGGREGATION_LIST = 0x8004105B,
|
||||
WBEM_E_PROPERTY_NOT_AN_OBJECT = 0x8004105C,
|
||||
WBEM_E_AGGREGATING_BY_OBJECT = 0x8004105D,
|
||||
WBEM_E_UNINTERPRETABLE_PROVIDER_QUERY = 0x8004105F,
|
||||
WBEM_E_BACKUP_RESTORE_WINMGMT_RUNNING = 0x80041060,
|
||||
WBEM_E_QUEUE_OVERFLOW = 0x80041061,
|
||||
WBEM_E_PRIVILEGE_NOT_HELD = 0x80041062,
|
||||
WBEM_E_INVALID_OPERATOR = 0x80041063,
|
||||
WBEM_E_LOCAL_CREDENTIALS = 0x80041064,
|
||||
WBEM_E_CANNOT_BE_ABSTRACT = 0x80041065,
|
||||
WBEM_E_AMENDED_OBJECT = 0x80041066,
|
||||
WBEM_E_CLIENT_TOO_SLOW = 0x80041067,
|
||||
WBEM_E_NULL_SECURITY_DESCRIPTOR = 0x80041068,
|
||||
WBEM_E_TIMED_OUT = 0x80041069,
|
||||
WBEM_E_INVALID_ASSOCIATION = 0x8004106A,
|
||||
WBEM_E_AMBIGUOUS_OPERATION = 0x8004106B,
|
||||
WBEM_E_QUOTA_VIOLATION = 0x8004106C,
|
||||
WBEM_E_RESERVED_001 = 0x8004106D,
|
||||
WBEM_E_RESERVED_002 = 0x8004106E,
|
||||
WBEM_E_UNSUPPORTED_LOCALE = 0x8004106F,
|
||||
WBEM_E_HANDLE_OUT_OF_DATE = 0x80041070,
|
||||
WBEM_E_CONNECTION_FAILED = 0x80041071,
|
||||
WBEM_E_INVALID_HANDLE_REQUEST = 0x80041072,
|
||||
WBEM_E_PROPERTY_NAME_TOO_WIDE = 0x80041073,
|
||||
WBEM_E_CLASS_NAME_TOO_WIDE = 0x80041074,
|
||||
WBEM_E_METHOD_NAME_TOO_WIDE = 0x80041075,
|
||||
WBEM_E_QUALIFIER_NAME_TOO_WIDE = 0x80041076,
|
||||
WBEM_E_RERUN_COMMAND = 0x80041077,
|
||||
WBEM_E_DATABASE_VER_MISMATCH = 0x80041078,
|
||||
WBEM_E_VETO_DELETE = 0x80041079,
|
||||
WBEM_E_VETO_PUT = 0x8004107A,
|
||||
WBEM_E_INVALID_LOCALE = 0x80041080,
|
||||
WBEM_E_PROVIDER_SUSPENDED = 0x80041081,
|
||||
WBEM_E_SYNCHRONIZATION_REQUIRED = 0x80041082,
|
||||
WBEM_E_NO_SCHEMA = 0x80041083,
|
||||
WBEM_E_PROVIDER_ALREADY_REGISTERED = 0x80041084,
|
||||
WBEM_E_PROVIDER_NOT_REGISTERED = 0x80041085,
|
||||
WBEM_E_FATAL_TRANSPORT_ERROR = 0x80041086,
|
||||
WBEM_E_ENCRYPTED_CONNECTION_REQUIRED = 0x80041087,
|
||||
WBEM_E_PROVIDER_TIMED_OUT = 0x80041088,
|
||||
WBEM_E_NO_KEY = 0x80041089,
|
||||
WBEM_E_PROVIDER_DISABLED = 0x8004108a
|
||||
} WBEMSTATUS;
|
||||
|
||||
typedef [public,noprint] enum
|
||||
{
|
||||
WBEM_FLAG_RETURN_IMMEDIATELY = 0x10,
|
||||
WBEM_FLAG_RETURN_WBEM_COMPLETE = 0,
|
||||
WBEM_FLAG_BIDIRECTIONAL = 0,
|
||||
WBEM_FLAG_FORWARD_ONLY = 0x20,
|
||||
WBEM_FLAG_NO_ERROR_OBJECT = 0x40,
|
||||
WBEM_FLAG_RETURN_ERROR_OBJECT = 0,
|
||||
WBEM_FLAG_SEND_STATUS = 0x80,
|
||||
WBEM_FLAG_DONT_SEND_STATUS = 0,
|
||||
WBEM_FLAG_ENSURE_LOCATABLE = 0x100,
|
||||
WBEM_FLAG_DIRECT_READ = 0x200,
|
||||
WBEM_FLAG_SEND_ONLY_SELECTED = 0,
|
||||
|
||||
WBEM_RETURN_WHEN_COMPLETE = 0,
|
||||
WBEM_RETURN_IMMEDIATELY = 0x10,
|
||||
|
||||
WBEM_MASK_RESERVED_FLAGS = 0x1F000,
|
||||
|
||||
WBEM_FLAG_USE_AMENDED_QUALIFIERS = 0x20000,
|
||||
|
||||
WBEM_FLAG_STRONG_VALIDATION = 0x100000
|
||||
|
||||
} WBEM_GENERIC_FLAG_TYPE;
|
||||
|
||||
typedef [public,noprint,v1_enum] enum tag_WBEM_TIMEOUT_TYPE
|
||||
{
|
||||
WBEM_NO_WAIT = 0,
|
||||
WBEM_INFINITE = 0xFFFFFFFF
|
||||
} WBEM_TIMEOUT_TYPE;
|
||||
|
||||
typedef [public,nopull,nopush,noprint,string,charset(UTF16)] uint16 *CIMSTRING;
|
||||
|
||||
typedef [public,v1_enum] enum
|
||||
{
|
||||
CIM_EMPTY = 0,
|
||||
|
||||
CIM_SINT8 = 16,
|
||||
CIM_UINT8 = 17,
|
||||
CIM_SINT16 = 2,
|
||||
CIM_UINT16 = 18,
|
||||
CIM_SINT32 = 3,
|
||||
CIM_UINT32 = 19,
|
||||
CIM_SINT64 = 20,
|
||||
CIM_UINT64 = 21,
|
||||
CIM_REAL32 = 4,
|
||||
CIM_REAL64 = 5,
|
||||
CIM_BOOLEAN = 11,
|
||||
CIM_STRING = 8,
|
||||
CIM_DATETIME = 101,
|
||||
CIM_REFERENCE = 102,
|
||||
CIM_CHAR16 = 103,
|
||||
CIM_OBJECT = 13,
|
||||
|
||||
CIM_FLAG_ARRAY = 0x2000,
|
||||
|
||||
CIM_ARR_SINT8 = CIM_FLAG_ARRAY | CIM_SINT8,
|
||||
CIM_ARR_UINT8 = CIM_FLAG_ARRAY | CIM_UINT8,
|
||||
CIM_ARR_SINT16 = CIM_FLAG_ARRAY | CIM_SINT16,
|
||||
CIM_ARR_UINT16 = CIM_FLAG_ARRAY | CIM_UINT16,
|
||||
CIM_ARR_SINT32 = CIM_FLAG_ARRAY | CIM_SINT32,
|
||||
CIM_ARR_UINT32 = CIM_FLAG_ARRAY | CIM_UINT32,
|
||||
CIM_ARR_SINT64 = CIM_FLAG_ARRAY | CIM_SINT64,
|
||||
CIM_ARR_UINT64 = CIM_FLAG_ARRAY | CIM_UINT64,
|
||||
CIM_ARR_REAL32 = CIM_FLAG_ARRAY | CIM_REAL32,
|
||||
CIM_ARR_REAL64 = CIM_FLAG_ARRAY | CIM_REAL64,
|
||||
CIM_ARR_BOOLEAN = CIM_FLAG_ARRAY | CIM_BOOLEAN,
|
||||
CIM_ARR_STRING = CIM_FLAG_ARRAY | CIM_STRING,
|
||||
CIM_ARR_DATETIME = CIM_FLAG_ARRAY | CIM_DATETIME,
|
||||
CIM_ARR_REFERENCE = CIM_FLAG_ARRAY | CIM_REFERENCE,
|
||||
CIM_ARR_CHAR16 = CIM_FLAG_ARRAY | CIM_CHAR16,
|
||||
CIM_ARR_OBJECT = CIM_FLAG_ARRAY | CIM_OBJECT,
|
||||
|
||||
CIM_ILLEGAL = 0xfff,
|
||||
CIM_TYPEMASK = 0x2FFF
|
||||
} CIMTYPE_ENUMERATION;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
int8 item[count];
|
||||
} arr_int8;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
uint8 item[count];
|
||||
} arr_uint8;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
int16 item[count];
|
||||
} arr_int16;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
uint16 item[count];
|
||||
} arr_uint16;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
int32 item[count];
|
||||
} arr_int32;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
uint32 item[count];
|
||||
} arr_uint32;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
dlong item[count];
|
||||
} arr_dlong;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
udlong item[count];
|
||||
} arr_udlong;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
[relative] CIMSTRING item[count];
|
||||
} arr_CIMSTRING;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
[relative,subcontext(4)] WbemClassObject *item[count];
|
||||
} arr_WbemClassObject;
|
||||
|
||||
// FIXME:avg implement rest of types
|
||||
typedef [public,nodiscriminant] union
|
||||
{
|
||||
[case(CIM_SINT8)] int8 v_sint8;
|
||||
[case(CIM_UINT8)] uint8 v_uint8;
|
||||
[case(CIM_SINT16)] int16 v_sint16;
|
||||
[case(CIM_UINT16)] uint16 v_uint16;
|
||||
[case(CIM_SINT32)] int32 v_sint32;
|
||||
[case(CIM_UINT32)] uint32 v_uint32;
|
||||
[case(CIM_SINT64)] dlong v_sint64;
|
||||
[case(CIM_UINT64)] udlong v_uint64;
|
||||
[case(CIM_REAL32)] uint32 v_real32;
|
||||
[case(CIM_REAL64)] udlong v_real64;
|
||||
[case(CIM_BOOLEAN)] uint16 v_boolean;
|
||||
[case(CIM_STRING),relative] CIMSTRING v_string;
|
||||
[case(CIM_DATETIME),relative] CIMSTRING v_datetime;
|
||||
[case(CIM_REFERENCE),relative] CIMSTRING v_reference;
|
||||
[case(CIM_OBJECT),subcontext(4),relative] WbemClassObject *v_object;
|
||||
|
||||
[case(CIM_ARR_SINT8),relative] arr_int8 *a_sint8;
|
||||
[case(CIM_ARR_UINT8),relative] arr_uint8 *a_uint8;
|
||||
[case(CIM_ARR_SINT16),relative] arr_int16 *a_sint16;
|
||||
[case(CIM_ARR_UINT16),relative] arr_uint16 *a_uint16;
|
||||
[case(CIM_ARR_SINT32),relative] arr_int32 *a_sint32;
|
||||
[case(CIM_ARR_UINT32),relative] arr_uint32 *a_uint32;
|
||||
[case(CIM_ARR_SINT64),relative] arr_dlong *a_sint64;
|
||||
[case(CIM_ARR_UINT64),relative] arr_udlong *a_uint64;
|
||||
[case(CIM_ARR_REAL32),relative] arr_uint32 *a_real32;
|
||||
[case(CIM_ARR_REAL64),relative] arr_udlong *a_real64;
|
||||
[case(CIM_ARR_BOOLEAN),relative] arr_uint16 *a_boolean;
|
||||
[case(CIM_ARR_STRING),relative] arr_CIMSTRING *a_string;
|
||||
[case(CIM_ARR_DATETIME),relative] arr_CIMSTRING *a_datetime;
|
||||
[case(CIM_ARR_REFERENCE),relative] arr_CIMSTRING *a_reference;
|
||||
[case(CIM_ARR_OBJECT),relative] arr_WbemClassObject *a_object;
|
||||
} CIMVAR;
|
||||
|
||||
typedef [public,bitmap8bit] bitmap
|
||||
{
|
||||
WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE = 0x1,
|
||||
WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS = 0x2,
|
||||
// WBEM_FLAVOR_MASK_PROPAGATION = 0x0F,
|
||||
|
||||
WBEM_FLAVOR_NOT_OVERRIDABLE = 0x10,
|
||||
// WBEM_FLAVOR_MASK_PERMISSIONS = 0x10,
|
||||
|
||||
WBEM_FLAVOR_ORIGIN_PROPAGATED = 0x20,
|
||||
WBEM_FLAVOR_ORIGIN_SYSTEM = 0x40,
|
||||
// WBEM_FLAVOR_MASK_ORIGIN = 0x60,
|
||||
|
||||
WBEM_FLAVOR_AMENDED = 0x80
|
||||
// WBEM_FLAVOR_MASK_AMENDED = 0x80
|
||||
|
||||
} WBEM_FLAVOR_TYPE;
|
||||
|
||||
typedef [public,bitmap8bit] bitmap
|
||||
{
|
||||
WCF_DECORATIONS = 1,
|
||||
WCF_INSTANCE = 2,
|
||||
WCF_CLASS = 4,
|
||||
WCF_CLASS_PART_INTERNAL = 8
|
||||
// WCF_CLASS_PART_SHARED = 0x104
|
||||
} WCO_FLAGS;
|
||||
|
||||
typedef [public,nopush,nopull] struct
|
||||
{
|
||||
[relative] CIMSTRING name;
|
||||
WBEM_FLAVOR_TYPE flavors;
|
||||
CIMTYPE_ENUMERATION cimtype;
|
||||
[switch_is(cimtype)] CIMVAR value;
|
||||
} WbemQualifier;
|
||||
|
||||
typedef [public,nopush,nopull] struct
|
||||
{
|
||||
uint32 count;
|
||||
[ref] WbemQualifier* item[count];
|
||||
} WbemQualifiers;
|
||||
|
||||
typedef [public] struct
|
||||
{
|
||||
uint32 cimtype;
|
||||
uint16 nr;
|
||||
uint32 offset;
|
||||
uint32 depth;
|
||||
WbemQualifiers qualifiers;
|
||||
} WbemPropertyDesc;
|
||||
|
||||
typedef [public] struct
|
||||
{
|
||||
[relative] CIMSTRING name;
|
||||
[relative] WbemPropertyDesc *desc;
|
||||
} WbemProperty;
|
||||
|
||||
typedef [public,nopull,nopush] struct
|
||||
{
|
||||
uint32 count;
|
||||
[ref] CIMSTRING item[count];
|
||||
} CIMSTRINGS;
|
||||
|
||||
typedef [public,bitmap8bit] bitmap {
|
||||
DEFAULT_FLAG_EMPTY = 1,
|
||||
DEFAULT_FLAG_INHERITED = 2
|
||||
} DEFAULT_FLAGS;
|
||||
|
||||
typedef [public,nopush,nopull,noprint,flag(NDR_NOALIGN)] struct
|
||||
{
|
||||
uint8 u_0;
|
||||
[relative, null_is_ffffffff] CIMSTRING __CLASS;
|
||||
uint32 data_size;
|
||||
CIMSTRINGS __DERIVATION;
|
||||
WbemQualifiers qualifiers;
|
||||
uint32 __PROPERTY_COUNT;
|
||||
WbemProperty properties[__PROPERTY_COUNT];
|
||||
uint8 default_flags[__PROPERTY_COUNT];
|
||||
CIMVAR default_values[__PROPERTY_COUNT];
|
||||
} WbemClass;
|
||||
|
||||
typedef [public] struct
|
||||
{
|
||||
[relative,null_is_ffffffff] CIMSTRING name;
|
||||
uint32 u0;
|
||||
uint32 u1;
|
||||
[relative] WbemQualifiers *qualifiers;
|
||||
[subcontext(4),relative] WbemClassObject *in;
|
||||
[subcontext(4),relative] WbemClassObject *out;
|
||||
} WbemMethod;
|
||||
|
||||
typedef [public,flag(NDR_NOALIGN)] struct
|
||||
{
|
||||
uint16 count;
|
||||
uint16 u0; // It has value 5F5F if there are no methods
|
||||
WbemMethod method[count];
|
||||
} WbemMethods;
|
||||
|
||||
typedef [public,flag(NDR_NOALIGN),nopush,nopull,noprint] struct
|
||||
{
|
||||
uint8 u1_0;
|
||||
[relative] CIMSTRING __CLASS;
|
||||
uint8 *default_flags;
|
||||
CIMVAR *data;
|
||||
uint32 u2_4;
|
||||
uint8 u3_1;
|
||||
} WbemInstance;
|
||||
|
||||
typedef [public,nopush,nopull,noprint,flag(NDR_NOALIGN)] struct
|
||||
{
|
||||
WCO_FLAGS flags;
|
||||
[ref] CIMSTRING __SERVER;
|
||||
[ref] CIMSTRING __NAMESPACE;
|
||||
WbemClass *sup_class;
|
||||
WbemMethods *sup_methods;
|
||||
WbemClass *obj_class;
|
||||
WbemMethods *obj_methods;
|
||||
WbemInstance *instance;
|
||||
} WbemClassObject;
|
||||
|
||||
// typedef [public] struct {
|
||||
// [value(0x72657355)] uint32 fFlags;
|
||||
// uint32 clSize;
|
||||
// [value(2*clSize)] uint32 _bsize;
|
||||
// [value(clSize)] uint32 _wsize;
|
||||
// [flag(NDR_NOALIGN)] uint16 asData[clSize];
|
||||
// } BSTR1;
|
||||
typedef [public,nopush,nopull,noprint,string,charset(UTF16)] uint16 *BSTR;
|
||||
|
||||
WERROR OpenNamespace(
|
||||
// [in] BSTR *strNamespace,
|
||||
// [in] int32 lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [out] IWbemServices** ppWorkingNamespace,
|
||||
// [out] IWbemCallResult** ppResult
|
||||
);
|
||||
|
||||
WERROR CancelAsyncCall(
|
||||
// [in] IWbemObjectSink* pSink
|
||||
);
|
||||
|
||||
WERROR QueryObjectSink(
|
||||
// [in] long lFlags
|
||||
// [out] IWbemObjectSink** ppResponseHandler
|
||||
);
|
||||
|
||||
// Classes and instances.
|
||||
// ======================
|
||||
|
||||
WERROR GetObject(
|
||||
[in] BSTR strObjectPath,
|
||||
[in] long lFlags,
|
||||
[in,unique] IWbemContext* pCtx,
|
||||
// [in,out,unique] IUnknown** ppObject,
|
||||
// [in,out,unique] IUnknown** ppCallResult
|
||||
[in,out,unique] IWbemClassObject** ppObject,
|
||||
[in,out,unique] IWbemCallResult** ppCallResult
|
||||
);
|
||||
|
||||
WERROR GetObjectAsync(
|
||||
// [in] BSTR strObjectPath,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
WERROR PutClass(
|
||||
// [in] IWbemClassObject* pObject,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [out, OPTIONAL] IWbemCallResult** ppCallResult
|
||||
);
|
||||
|
||||
WERROR PutClassAsync(
|
||||
// [in] IWbemClassObject* pObject,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
WERROR DeleteClass(
|
||||
// [in] BSTR strClass,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [out, OPTIONAL] IWbemCallResult** ppCallResult
|
||||
);
|
||||
|
||||
WERROR DeleteClassAsync(
|
||||
// [in] BSTR strClass,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
WERROR CreateClassEnum(
|
||||
// [in] BSTR strSuperclass,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [out] IEnumWbemClassObject** ppEnum
|
||||
);
|
||||
|
||||
WERROR CreateClassEnumAsync(
|
||||
// [in] BSTR strSuperclass,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
WERROR PutInstance(
|
||||
// [in] IWbemClassObject* pInst,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [out, OPTIONAL] IWbemCallResult** ppCallResult
|
||||
);
|
||||
|
||||
WERROR PutInstanceAsync(
|
||||
// [in] IWbemClassObject* pInst,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
WERROR DeleteInstance(
|
||||
// [in] BSTR strObjectPath,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [out, OPTIONAL] IWbemCallResult** ppCallResult
|
||||
);
|
||||
|
||||
WERROR DeleteInstanceAsync(
|
||||
// [in] BSTR strObjectPath,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
WERROR CreateInstanceEnum(
|
||||
[in] BSTR strFilter, // allow more things than a class name
|
||||
[in] long lFlags,
|
||||
[in,unique] IWbemContext* pCtx,
|
||||
[out] IEnumWbemClassObject** ppEnum
|
||||
);
|
||||
|
||||
WERROR CreateInstanceEnumAsync(
|
||||
// [in] BSTR strFilter, // allow more things than a class name
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
WERROR ExecQuery(
|
||||
[in] BSTR strQueryLanguage,
|
||||
[in] BSTR strQuery,
|
||||
[in] long lFlags,
|
||||
[in,unique] IWbemContext* pCtx,
|
||||
[out] IEnumWbemClassObject** ppEnum
|
||||
);
|
||||
|
||||
WERROR ExecQueryAsync(
|
||||
// [in] BSTR strQueryLanguage,
|
||||
// [in] BSTR strQuery,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
|
||||
WERROR ExecNotificationQuery(
|
||||
[in] BSTR strQueryLanguage,
|
||||
[in] BSTR strQuery,
|
||||
[in] long lFlags,
|
||||
[in,unique] IWbemContext* pCtx,
|
||||
[out] IEnumWbemClassObject** ppEnum
|
||||
);
|
||||
|
||||
WERROR ExecNotificationQueryAsync(
|
||||
// [in] BSTR strQueryLanguage,
|
||||
// [in] BSTR strQuery,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
|
||||
// Methods
|
||||
// =======
|
||||
|
||||
WERROR ExecMethod(
|
||||
[in] BSTR strObjectPath,
|
||||
[in] BSTR strMethodName,
|
||||
[in] long lFlags,
|
||||
[in,unique] IWbemContext* pCtx,
|
||||
[in,unique] IWbemClassObject* pInParams,
|
||||
[in,out,unique] IWbemClassObject** ppOutParams,
|
||||
[in,out,unique] IWbemCallResult** ppCallResult
|
||||
);
|
||||
|
||||
WERROR ExecMethodAsync(
|
||||
// [in] BSTR strObjectPath,
|
||||
// [in] BSTR strMethodName,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [in] IWbemClassObject* pInParams,
|
||||
// [in] IWbemObjectSink* pResponseHandler
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(027947e1-d731-11ce-a357-000000000001),
|
||||
pointer_default(unique)
|
||||
] interface IEnumWbemClassObject : IUnknown
|
||||
{
|
||||
WERROR Reset();
|
||||
|
||||
[call_as(Next)] WERROR IEnumWbemClassObject_Next(
|
||||
[in] int32 lTimeout,
|
||||
[in] uint32 uCount,
|
||||
[out, size_is(uCount), length_is(*puReturned)]
|
||||
IWbemClassObject** apObjects,
|
||||
[out] uint32* puReturned
|
||||
);
|
||||
|
||||
WERROR NextAsync(
|
||||
// [in] ULONG uCount
|
||||
// [in] IWbemObjectSink* pSink
|
||||
);
|
||||
|
||||
WERROR IEnumWbemClassObject_Clone(
|
||||
// [out] IEnumWbemClassObject** ppEnum
|
||||
);
|
||||
|
||||
WERROR Skip(
|
||||
// [in] long lTimeout,
|
||||
// [in] ULONG nCount
|
||||
);
|
||||
};
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid("44aca674-e8fc-11d0-a07c-00c04fb68820"),
|
||||
pointer_default(unique)
|
||||
] interface IWbemContext : IUnknown
|
||||
{
|
||||
WERROR Clone([out] IWbemContext** ppNewCopy);
|
||||
|
||||
WERROR GetNames(
|
||||
// [in] long lFlags,
|
||||
// [out] SAFEARRAY (BSTR)* pNames
|
||||
);
|
||||
|
||||
WERROR BeginEnumeration([in] long lFlags);
|
||||
|
||||
WERROR Next(
|
||||
// [in] long lFlags,
|
||||
// [out] BSTR* pstrName,
|
||||
// [out] VARIANT* pValue
|
||||
);
|
||||
|
||||
WERROR EndEnumeration();
|
||||
|
||||
|
||||
WERROR SetValue(
|
||||
// [in, string] LPCWSTR wszName,
|
||||
// [in] long lFlags
|
||||
// [in] VARIANT* pValue
|
||||
);
|
||||
|
||||
WERROR GetValue(
|
||||
// [in, string] LPCWSTR wszName,
|
||||
// [in] long lFlags,
|
||||
// [out] VARIANT* pValue
|
||||
);
|
||||
|
||||
WERROR DeleteValue(
|
||||
// [in, string] LPCWSTR wszName,
|
||||
// [in] long lFlags
|
||||
);
|
||||
|
||||
WERROR DeleteAll();
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid("F309AD18-D86A-11d0-A075-00C04FB68820"),
|
||||
pointer_default(unique)
|
||||
] interface IWbemLevel1Login : IUnknown
|
||||
{
|
||||
WERROR EstablishPosition(
|
||||
// [in, unique, string] LPWSTR wszClientMachineName,
|
||||
// [in] uint32 dwProcessId,
|
||||
// [out] uint32* phAuthEventHandle
|
||||
);
|
||||
|
||||
WERROR RequestChallenge(
|
||||
// [in, unique, string] LPWSTR wszNetworkResource,
|
||||
// [in, unique, string] LPWSTR wszUser,
|
||||
// [out] WBEM_128BITS Nonce
|
||||
);
|
||||
|
||||
WERROR WBEMLogin(
|
||||
// [in, unique, string] LPWSTR wszPreferredLocale,
|
||||
// [in, unique] WBEM_128BITS AccessToken,
|
||||
// [in] long lFlags
|
||||
// [in] IWbemContext* pCtx,
|
||||
// [out] IWbemServices** ppNamespace
|
||||
);
|
||||
|
||||
WERROR NTLMLogin(
|
||||
[in,unique,string,charset(UTF16)] uint16 *wszNetworkResource,
|
||||
[in,unique,string,charset(UTF16)] uint16 *wszPreferredLocale,
|
||||
[in] long lFlags,
|
||||
[in,unique] IWbemContext* pCtx,
|
||||
[out,ref] IWbemServices** ppNamespace
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid("423ec01e-2e35-11d2-b604-00104b703efd"),
|
||||
pointer_default(unique)
|
||||
] interface IWbemWCOSmartEnum : IUnknown
|
||||
{
|
||||
typedef struct {
|
||||
uint32 size;
|
||||
char data[size];
|
||||
} WBEMDATA;
|
||||
|
||||
typedef enum {
|
||||
WTYPE_SCHEMA = 1,
|
||||
WTYPE_CLASS = 2,
|
||||
WTYPE_OBJECT = 3
|
||||
} WTYPES;
|
||||
|
||||
typedef [relative_base] struct {
|
||||
// [relative] WBEMDATA4 *data; /* 0x9 */
|
||||
uint32 data_size;
|
||||
uint8 wtype;
|
||||
} WBEMDATA4;
|
||||
|
||||
typedef [relative_base] struct {
|
||||
[relative] WBEMDATA4 *data; /* 0x9 */
|
||||
uint32 data_size;
|
||||
uint8 wtype;
|
||||
} WBEMDATA3;
|
||||
|
||||
typedef [relative_base] struct {
|
||||
[relative,size_is(obj_num)] WBEMDATA3 *data; /* 0x8 */
|
||||
uint32 data_size;
|
||||
uint32 obj_num;
|
||||
} WBEMDATA2;
|
||||
|
||||
typedef [relative_base] struct {
|
||||
[relative] WBEMDATA2 *data; /* 0x8 */
|
||||
uint32 data_size;
|
||||
} WBEMDATA1;
|
||||
|
||||
typedef [relative_base] struct {
|
||||
uint32 u1_0; /* 0 */
|
||||
hyper signature; /* 'WBEMDATA' */
|
||||
[relative] WBEMDATA1 *data; /* 0x1A */
|
||||
uint32 data_size;
|
||||
uint32 u2_0; /* 0 */
|
||||
uint8 ver_major; /* 1 */
|
||||
uint8 ver_minor; /* 0 - Win2000, 1 - WinXP/2003 */
|
||||
} WBEMDATA0;
|
||||
|
||||
WERROR IWbemWCOSmartEnum_Next(
|
||||
[in,ref] GUID *gEWCO,
|
||||
[in] uint32 lTimeOut,
|
||||
[in] uint32 uCount,
|
||||
// [in] uint32 unknown,
|
||||
// [in,ref] GUID *gWCO,
|
||||
[out,ref] uint32 *puReturned,
|
||||
[out,ref] uint32 *pSize,
|
||||
// [out,ref] WBEMDATA0 **pData
|
||||
[out,ref,noprint,size_is(,*pSize)] uint8 **pData
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid("1c1c45ee-4395-11d2-b60b-00104b703efd"),
|
||||
pointer_default(unique)
|
||||
] interface IWbemFetchSmartEnum : IUnknown
|
||||
{
|
||||
WERROR Fetch(
|
||||
[out] IWbemWCOSmartEnum** ppEnum
|
||||
);
|
||||
WERROR Test(
|
||||
[out] WbemClassObject** ppEnum
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
// restricted,
|
||||
uuid(44aca675-e8fc-11d0-a07c-00c04fb68820)
|
||||
] interface IWbemCallResult : IUnknown
|
||||
{
|
||||
WERROR GetResultObject(
|
||||
[in] long lTimeout,
|
||||
[out] IUnknown** ppResultObject
|
||||
// [out] IWbemClassObject** ppResultObject
|
||||
);
|
||||
|
||||
WERROR GetResultString(
|
||||
[in] long lTimeout
|
||||
// [out] BSTR* pstrResultString
|
||||
);
|
||||
|
||||
WERROR GetResultServices(
|
||||
[in] long lTimeout,
|
||||
[out] IWbemServices** ppServices
|
||||
);
|
||||
|
||||
WERROR GetCallStatus(
|
||||
[in] long lTimeout,
|
||||
[out] long* plStatus
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,394 @@
|
||||
/*
|
||||
dfs interface definition
|
||||
*/
|
||||
|
||||
[ uuid("4fc742e0-4a10-11cf-8273-00aa004ae673"),
|
||||
version(3.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Settings for Microsoft Distributed File System")
|
||||
] interface netdfs
|
||||
{
|
||||
/******************/
|
||||
/* Function: 0x00 */
|
||||
typedef [v1_enum] enum {
|
||||
DFS_MANAGER_VERSION_NT4 = 1,
|
||||
DFS_MANAGER_VERSION_W2K = 2,
|
||||
DFS_MANAGER_VERSION_W2K3 = 4
|
||||
} dfs_ManagerVersion;
|
||||
|
||||
void dfs_GetManagerVersion(
|
||||
[out] dfs_ManagerVersion *version
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x01 */
|
||||
WERROR dfs_Add (
|
||||
[in] [string,charset(UTF16)] uint16 *path,
|
||||
[in] [string,charset(UTF16)] uint16 *server,
|
||||
[in,unique] [string,charset(UTF16)] uint16 *share,
|
||||
[in,unique] [string,charset(UTF16)] uint16 *comment,
|
||||
[in] uint32 flags
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x02 */
|
||||
WERROR dfs_Remove (
|
||||
[in] [string,charset(UTF16)] uint16 *dfs_entry_path,
|
||||
[in,unique] [string,charset(UTF16)] uint16 *servername,
|
||||
[in,unique] [string,charset(UTF16)] uint16 *sharename
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x03 */
|
||||
|
||||
typedef struct {
|
||||
} dfs_Info0;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *path;
|
||||
} dfs_Info1;
|
||||
|
||||
/* first 4 bits unverified yet */
|
||||
typedef [public,bitmap32bit] bitmap {
|
||||
DFS_VOLUME_STATE_OK = 0x1,
|
||||
DFS_VOLUME_STATE_INCONSISTENT = 0x2,
|
||||
DFS_VOLUME_STATE_OFFLINE = 0x4,
|
||||
DFS_VOLUME_STATE_ONLINE = 0x8,
|
||||
DFS_VOLUME_STATE_STANDALONE = DFS_VOLUME_FLAVOR_STANDALONE,
|
||||
DFS_VOLUME_STATE_AD_BLOB = DFS_VOLUME_FLAVOR_AD_BLOB
|
||||
} dfs_VolumeState;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *path;
|
||||
[string,charset(UTF16)] uint16 *comment;
|
||||
dfs_VolumeState state;
|
||||
uint32 num_stores;
|
||||
} dfs_Info2;
|
||||
|
||||
const int DFS_STORAGE_STATES = 0xf;
|
||||
|
||||
/* yes, this is a bitmap */
|
||||
typedef [public,bitmap32bit] bitmap {
|
||||
DFS_STORAGE_STATE_OFFLINE = 1,
|
||||
DFS_STORAGE_STATE_ONLINE = 2,
|
||||
DFS_STORAGE_STATE_ACTIVE = 4
|
||||
} dfs_StorageState;
|
||||
|
||||
typedef struct {
|
||||
dfs_StorageState state;
|
||||
[string,charset(UTF16)] uint16 *server;
|
||||
[string,charset(UTF16)] uint16 *share;
|
||||
} dfs_StorageInfo;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *path;
|
||||
[string,charset(UTF16)] uint16 *comment;
|
||||
dfs_VolumeState state;
|
||||
uint32 num_stores;
|
||||
[size_is(num_stores)] dfs_StorageInfo *stores;
|
||||
} dfs_Info3;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *path;
|
||||
[string,charset(UTF16)] uint16 *comment;
|
||||
dfs_VolumeState state;
|
||||
uint32 timeout;
|
||||
GUID guid;
|
||||
uint32 num_stores;
|
||||
[size_is(num_stores)] dfs_StorageInfo *stores;
|
||||
} dfs_Info4;
|
||||
|
||||
/* verified with dfsutil */
|
||||
typedef [public,bitmap32bit] bitmap {
|
||||
DFS_PROPERTY_FLAG_INSITE_REFERRALS = 0x01,
|
||||
DFS_PROPERTY_FLAG_ROOT_SCALABILITY = 0x02,
|
||||
DFS_PROPERTY_FLAG_SITE_COSTING = 0x04,
|
||||
DFS_PROPERTY_FLAG_TARGET_FAILBACK = 0x08,
|
||||
DFS_PROPERTY_FLAG_CLUSTER_ENABLED = 0x10 /* untested */
|
||||
} dfs_PropertyFlags;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *path;
|
||||
[string,charset(UTF16)] uint16 *comment;
|
||||
dfs_VolumeState state;
|
||||
uint32 timeout;
|
||||
GUID guid;
|
||||
dfs_PropertyFlags flags;
|
||||
uint32 pktsize;
|
||||
uint32 num_stores;
|
||||
} dfs_Info5;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
DFS_INVALID_PRIORITY_CLASS = -1,
|
||||
DFS_SITE_COST_NORMAL_PRIORITY_CLASS = 0,
|
||||
DFS_GLOBAL_HIGH_PRIORITY_CLASS = 1,
|
||||
DFS_SITE_COST_HIGH_PRIORITY_CLASS = 2,
|
||||
DFS_SITE_COST_LOW_PRIORITY_CLASS = 3,
|
||||
DFS_GLOBAL_LOW_PRIORITY_CLASS = 4
|
||||
} dfs_Target_PriorityClass;
|
||||
|
||||
typedef struct {
|
||||
dfs_Target_PriorityClass target_priority_class;
|
||||
uint16 target_priority_rank;
|
||||
uint16 reserved;
|
||||
} dfs_Target_Priority;
|
||||
|
||||
typedef struct {
|
||||
dfs_StorageInfo info;
|
||||
dfs_Target_Priority target_priority;
|
||||
} dfs_StorageInfo2;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *entry_path;
|
||||
[string,charset(UTF16)] uint16 *comment;
|
||||
dfs_VolumeState state;
|
||||
uint32 timeout;
|
||||
GUID guid;
|
||||
dfs_PropertyFlags flags;
|
||||
uint32 pktsize;
|
||||
uint16 num_stores;
|
||||
[size_is(num_stores)] dfs_StorageInfo2 *stores;
|
||||
} dfs_Info6;
|
||||
|
||||
typedef struct {
|
||||
GUID generation_guid;
|
||||
} dfs_Info7;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *comment;
|
||||
} dfs_Info100;
|
||||
|
||||
typedef struct {
|
||||
dfs_StorageState state;
|
||||
} dfs_Info101;
|
||||
|
||||
typedef struct {
|
||||
uint32 timeout;
|
||||
} dfs_Info102;
|
||||
|
||||
typedef struct {
|
||||
dfs_PropertyFlags flags;
|
||||
} dfs_Info103;
|
||||
|
||||
typedef struct {
|
||||
dfs_Target_Priority priority;
|
||||
} dfs_Info104;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *comment;
|
||||
dfs_VolumeState state;
|
||||
uint32 timeout;
|
||||
uint32 property_flag_mask;
|
||||
uint32 property_flags;
|
||||
} dfs_Info105;
|
||||
|
||||
typedef struct {
|
||||
dfs_StorageState state;
|
||||
dfs_Target_Priority priority;
|
||||
} dfs_Info106;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *dom_root;
|
||||
} dfs_Info200;
|
||||
|
||||
typedef enum {
|
||||
DFS_VOLUME_FLAVOR_STANDALONE = 0x100,
|
||||
DFS_VOLUME_FLAVOR_AD_BLOB = 0x200
|
||||
} dfs_VolumeFlavor;
|
||||
|
||||
typedef struct {
|
||||
dfs_VolumeFlavor flavor;
|
||||
[string,charset(UTF16)] uint16 *dom_root;
|
||||
} dfs_Info300;
|
||||
|
||||
typedef union {
|
||||
[case(0)] dfs_Info0 *info0;
|
||||
[case(1)] dfs_Info1 *info1;
|
||||
[case(2)] dfs_Info2 *info2;
|
||||
[case(3)] dfs_Info3 *info3;
|
||||
[case(4)] dfs_Info4 *info4;
|
||||
[case(5)] dfs_Info5 *info5;
|
||||
[case(6)] dfs_Info6 *info6;
|
||||
[case(7)] dfs_Info7 *info7;
|
||||
[case(100)] dfs_Info100 *info100;
|
||||
[case(101)] dfs_Info101 *info101;
|
||||
[case(102)] dfs_Info102 *info102;
|
||||
[case(103)] dfs_Info103 *info103;
|
||||
[case(104)] dfs_Info104 *info104;
|
||||
[case(105)] dfs_Info105 *info105;
|
||||
[case(106)] dfs_Info106 *info106;
|
||||
} dfs_Info;
|
||||
|
||||
WERROR dfs_SetInfo (
|
||||
[in] [string,charset(UTF16)] uint16 dfs_entry_path[],
|
||||
[in,unique] [string,charset(UTF16)] uint16 *servername,
|
||||
[in,unique] [string,charset(UTF16)] uint16 *sharename,
|
||||
[in] uint32 level,
|
||||
[in,ref,switch_is(level)] dfs_Info *info
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x04 */
|
||||
WERROR dfs_GetInfo (
|
||||
[in] [string,charset(UTF16)] uint16 dfs_entry_path[],
|
||||
[in,unique] [string,charset(UTF16)] uint16 *servername,
|
||||
[in,unique] [string,charset(UTF16)] uint16 *sharename,
|
||||
[in] uint32 level,
|
||||
[out,switch_is(level)] dfs_Info *info
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x05 */
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] dfs_Info1 *s;
|
||||
} dfs_EnumArray1;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] dfs_Info2 *s;
|
||||
} dfs_EnumArray2;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] dfs_Info3 *s;
|
||||
} dfs_EnumArray3;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] dfs_Info4 *s;
|
||||
} dfs_EnumArray4;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] dfs_Info200 *s;
|
||||
} dfs_EnumArray200;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] dfs_Info300 *s;
|
||||
} dfs_EnumArray300;
|
||||
|
||||
|
||||
typedef union {
|
||||
[case(1)] dfs_EnumArray1 *info1;
|
||||
[case(2)] dfs_EnumArray2 *info2;
|
||||
[case(3)] dfs_EnumArray3 *info3;
|
||||
[case(4)] dfs_EnumArray4 *info4;
|
||||
[case(200)] dfs_EnumArray200 *info200;
|
||||
[case(300)] dfs_EnumArray300 *info300;
|
||||
} dfs_EnumInfo;
|
||||
|
||||
typedef struct {
|
||||
uint32 level;
|
||||
[switch_is(level)] dfs_EnumInfo e;
|
||||
} dfs_EnumStruct;
|
||||
|
||||
WERROR dfs_Enum (
|
||||
[in] uint32 level,
|
||||
[in] uint32 bufsize,
|
||||
[in,out,unique] dfs_EnumStruct *info,
|
||||
[in,out,unique] uint32 *total
|
||||
);
|
||||
|
||||
/* Function 0x06 */
|
||||
WERROR dfs_Rename();
|
||||
|
||||
/* Function 0x07 */
|
||||
WERROR dfs_Move();
|
||||
|
||||
/* Function 0x08 */
|
||||
WERROR dfs_ManagerGetConfigInfo();
|
||||
|
||||
/* Function 0x09 */
|
||||
WERROR dfs_ManagerSendSiteInfo();
|
||||
|
||||
/* Function 0x0a */
|
||||
typedef struct {
|
||||
uint32 unknown1;
|
||||
[string,charset(UTF16)] uint16 *unknown2;
|
||||
} dfs_UnknownStruct;
|
||||
|
||||
WERROR dfs_AddFtRoot(
|
||||
[in] [string,charset(UTF16)] uint16 servername[],
|
||||
[in] [string,charset(UTF16)] uint16 dns_servername[],
|
||||
[in] [string,charset(UTF16)] uint16 dfsname[],
|
||||
[in] [string,charset(UTF16)] uint16 rootshare[],
|
||||
[in] [string,charset(UTF16)] uint16 comment[],
|
||||
[in] [string,charset(UTF16)] uint16 dfs_config_dn[],
|
||||
[in] uint8 unknown1,
|
||||
[in] uint32 flags,
|
||||
[in,out,unique] dfs_UnknownStruct **unknown2
|
||||
);
|
||||
|
||||
/* Function 0x0b */
|
||||
WERROR dfs_RemoveFtRoot(
|
||||
[in] [string,charset(UTF16)] uint16 servername[],
|
||||
[in] [string,charset(UTF16)] uint16 dns_servername[],
|
||||
[in] [string,charset(UTF16)] uint16 dfsname[],
|
||||
[in] [string,charset(UTF16)] uint16 rootshare[],
|
||||
[in] uint32 flags,
|
||||
[in,out,unique] dfs_UnknownStruct **unknown
|
||||
);
|
||||
|
||||
/* Function 0x0c */
|
||||
WERROR dfs_AddStdRoot(
|
||||
[in] [string,charset(UTF16)] uint16 servername[],
|
||||
[in] [string,charset(UTF16)] uint16 rootshare[],
|
||||
[in] [string,charset(UTF16)] uint16 comment[],
|
||||
[in] uint32 flags
|
||||
);
|
||||
|
||||
/* Function 0x0d */
|
||||
WERROR dfs_RemoveStdRoot(
|
||||
[in] [string,charset(UTF16)] uint16 servername[],
|
||||
[in] [string,charset(UTF16)] uint16 rootshare[],
|
||||
[in] uint32 flags
|
||||
);
|
||||
|
||||
/* Function 0x0e */
|
||||
WERROR dfs_ManagerInitialize(
|
||||
[in] [string,charset(UTF16)] uint16 *servername,
|
||||
[in] uint32 flags
|
||||
);
|
||||
|
||||
/* Function 0x0f */
|
||||
WERROR dfs_AddStdRootForced(
|
||||
[in] [string,charset(UTF16)] uint16 servername[],
|
||||
[in] [string,charset(UTF16)] uint16 rootshare[],
|
||||
[in] [string,charset(UTF16)] uint16 comment[],
|
||||
[in] [string,charset(UTF16)] uint16 store[] /* C:\\whatever */
|
||||
);
|
||||
|
||||
/* Function 0x10 */
|
||||
WERROR dfs_GetDcAddress();
|
||||
|
||||
/* Function 0x11 */
|
||||
WERROR dfs_SetDcAddress();
|
||||
|
||||
/* Function 0x12 */
|
||||
WERROR dfs_FlushFtTable(
|
||||
[in] [string,charset(UTF16)] uint16 servername[],
|
||||
[in] [string,charset(UTF16)] uint16 rootshare[]
|
||||
);
|
||||
|
||||
/* Function 0x13 */
|
||||
WERROR dfs_Add2();
|
||||
|
||||
/* Function 0x14 */
|
||||
WERROR dfs_Remove2();
|
||||
|
||||
/* Function 0x15 */
|
||||
WERROR dfs_EnumEx(
|
||||
[in] [string,charset(UTF16)] uint16 dfs_name[],
|
||||
[in] uint32 level,
|
||||
[in] uint32 bufsize,
|
||||
[in,out,unique] dfs_EnumStruct *info,
|
||||
[in,out,unique] uint32 *total
|
||||
);
|
||||
|
||||
/* Function 0x16 */
|
||||
WERROR dfs_SetInfo2();
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
dnsserver interface definition
|
||||
*/
|
||||
|
||||
[ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
|
||||
version(5.0),
|
||||
pointer_default(unique),
|
||||
helpstring("DNS Server")
|
||||
] interface dnsserver
|
||||
{
|
||||
void dnsserver_foo();
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
import "drsuapi.idl";
|
||||
|
||||
[
|
||||
uuid("12345778-1234-abcd-0001-00000001"),
|
||||
version(0.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Active Directory Replication LDAP Blobs")
|
||||
]
|
||||
interface drsblobs {
|
||||
declare bitmap drsuapi_DsReplicaSyncOptions;
|
||||
declare bitmap drsuapi_DsReplicaNeighbourFlags;
|
||||
declare [v1_enum] enum drsuapi_DsAttributeId;
|
||||
|
||||
/*
|
||||
* replPropertyMetaData
|
||||
* w2k uses version 1
|
||||
* w2k3 uses version 1
|
||||
*/
|
||||
typedef struct {
|
||||
drsuapi_DsAttributeId attid;
|
||||
uint32 version;
|
||||
NTTIME_1sec orginating_time;
|
||||
GUID orginating_invocation_id;
|
||||
hyper orginating_usn;
|
||||
hyper local_usn;
|
||||
} replPropertyMetaData1;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
uint32 reserved;
|
||||
replPropertyMetaData1 array[count];
|
||||
} replPropertyMetaDataCtr1;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(1)] replPropertyMetaDataCtr1 ctr1;
|
||||
} replPropertyMetaDataCtr;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 version;
|
||||
uint32 reserved;
|
||||
[switch_is(version)] replPropertyMetaDataCtr ctr;
|
||||
} replPropertyMetaDataBlob;
|
||||
|
||||
void decode_replPropertyMetaData(
|
||||
[in] replPropertyMetaDataBlob blob
|
||||
);
|
||||
|
||||
/*
|
||||
* replUpToDateVector
|
||||
* w2k uses version 1
|
||||
* w2k3 uses version 2
|
||||
*/
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
uint32 reserved;
|
||||
drsuapi_DsReplicaCoursor coursors[count];
|
||||
} replUpToDateVectorCtr1;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
uint32 reserved;
|
||||
drsuapi_DsReplicaCoursor2 coursors[count];
|
||||
} replUpToDateVectorCtr2;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(1)] replUpToDateVectorCtr1 ctr1;
|
||||
[case(2)] replUpToDateVectorCtr2 ctr2;
|
||||
} replUpToDateVectorCtr;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 version;
|
||||
uint32 reserved;
|
||||
[switch_is(version)] replUpToDateVectorCtr ctr;
|
||||
} replUpToDateVectorBlob;
|
||||
|
||||
void decode_replUpToDateVector(
|
||||
[in] replUpToDateVectorBlob blob
|
||||
);
|
||||
|
||||
/*
|
||||
* repsFrom/repsTo
|
||||
* w2k uses version 1
|
||||
* w2k3 uses version 1
|
||||
*/
|
||||
typedef [public,gensize] struct {
|
||||
asclstr dns_name;
|
||||
} repsFromTo1OtherInfo;
|
||||
|
||||
typedef [public,gensize,flag(NDR_PAHEX)] struct {
|
||||
/* this includes the 8 bytes of the repsFromToBlob header */
|
||||
[value(ndr_size_repsFromTo1(r, ndr->flags)+8)] uint32 blobsize;
|
||||
uint32 consecutive_sync_failures;
|
||||
NTTIME_1sec last_success;
|
||||
NTTIME_1sec last_attempt;
|
||||
WERROR result_last_attempt;
|
||||
[relative] repsFromTo1OtherInfo *other_info;
|
||||
[value(ndr_size_repsFromTo1OtherInfo(other_info, ndr->flags))] uint32 other_info_length;
|
||||
drsuapi_DsReplicaNeighbourFlags replica_flags;
|
||||
uint8 schedule[84];
|
||||
uint32 reserved;
|
||||
drsuapi_DsReplicaHighWaterMark highwatermark;
|
||||
GUID source_dsa_obj_guid; /* the 'objectGuid' field of the CN=NTDS Settings object */
|
||||
GUID source_dsa_invocation_id; /* the 'invocationId' field of the CN=NTDS Settings object */
|
||||
GUID transport_guid;
|
||||
} repsFromTo1;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(1)] repsFromTo1 ctr1;
|
||||
} repsFromTo;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 version;
|
||||
uint32 reserved;
|
||||
[switch_is(version)] repsFromTo ctr;
|
||||
} repsFromToBlob;
|
||||
|
||||
void decode_repsFromTo(
|
||||
[in] repsFromToBlob blob
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
hyper h4;
|
||||
replUpToDateVectorCtr1 uptodateness_vector;
|
||||
} ldapControlDirSyncExtraData;
|
||||
|
||||
typedef [nodiscriminant,gensize] union {
|
||||
[case(0)];
|
||||
[default] ldapControlDirSyncExtraData data;
|
||||
} ldapControlDirSyncExtra;
|
||||
|
||||
typedef struct {
|
||||
[value(3)] uint32 u1;
|
||||
NTTIME time;
|
||||
uint32 u2;
|
||||
uint32 u3;
|
||||
[value(ndr_size_ldapControlDirSyncExtra(&r->extra, r->extra.data.uptodateness_vector.count, 0))]
|
||||
uint32 extra_length;
|
||||
drsuapi_DsReplicaHighWaterMark highwatermark;
|
||||
GUID guid1;
|
||||
[switch_is(extra_length)] ldapControlDirSyncExtra extra;
|
||||
} ldapControlDirSyncBlob;
|
||||
|
||||
typedef [public,relative_base] struct {
|
||||
[charset(DOS),value("MSDS")] uint8 msds[4];
|
||||
[subcontext(0)] ldapControlDirSyncBlob blob;
|
||||
} ldapControlDirSyncCookie;
|
||||
|
||||
void decode_ldapControlDirSync(
|
||||
[in] ldapControlDirSyncCookie cookie
|
||||
);
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 marker;
|
||||
DATA_BLOB data;
|
||||
} DsCompressedChunk;
|
||||
|
||||
typedef [public] struct {
|
||||
DsCompressedChunk chunks[5];
|
||||
} DsCompressedBlob;
|
||||
|
||||
void decode_DsCompressed(
|
||||
[in] DsCompressedBlob blob
|
||||
);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,34 @@
|
||||
[
|
||||
uuid("ecec0d70-a603-11d0-96b1-00a0c91ece30"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Backup support for Active Directory")
|
||||
] interface ad_backup
|
||||
{
|
||||
void HrRBackupPrepare();
|
||||
void HrRBackupEnd();
|
||||
void HrRBackupGetAttachmentInformation();
|
||||
void HrRBackupOpenFile();
|
||||
void HrRBackupRead();
|
||||
void HrRBackupClose();
|
||||
void HrRBackupGetBackupLogs();
|
||||
void HrRBackupTruncateLogs();
|
||||
void HrRBackupPing();
|
||||
}
|
||||
|
||||
[
|
||||
uuid("16e0cf3a-a604-11d0-96b1-00a0c91ece30"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Restoring Active Directory backups")
|
||||
] interface ad_restore
|
||||
{
|
||||
void HrRIsNTDSOnline();
|
||||
void HrRRestorePrepare();
|
||||
void HrRRestoreRegister();
|
||||
void HrRRestoreRegisterComplete();
|
||||
void HrRRestoreGetDatabaseLocations();
|
||||
void HrRRestoreEnd();
|
||||
void HrRRestoreSetCurrentLogNumber();
|
||||
void HrRRestoreCheckLogsForBackup();
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
dssetup interface definition
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("3919286a-b10c-11d0-9ba8-00c04fd92ef5"),
|
||||
version(0.0),
|
||||
endpoint("ncacn_np:[\\pipe\\lsarpc]", "ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
|
||||
pointer_default(unique),
|
||||
helpstring("Active Directory Setup")
|
||||
] interface dssetup
|
||||
{
|
||||
/**********************************************/
|
||||
/* Function 0x00 */
|
||||
|
||||
typedef enum {
|
||||
DS_ROLE_STANDALONE_WORKSTATION = 0,
|
||||
DS_ROLE_MEMBER_WORKSTATION = 1,
|
||||
DS_ROLE_STANDALONE_SERVER = 2,
|
||||
DS_ROLE_MEMBER_SERVER = 3,
|
||||
DS_ROLE_BACKUP_DC = 4,
|
||||
DS_ROLE_PRIMARY_DC = 5
|
||||
} dssetup_DsRole;
|
||||
|
||||
typedef [bitmap32bit] bitmap {
|
||||
DS_ROLE_PRIMARY_DS_RUNNING = 0x00000001,
|
||||
DS_ROLE_PRIMARY_DS_MIXED_MODE = 0x00000002,
|
||||
DS_ROLE_UPGRADE_IN_PROGRESS = 0x00000004,
|
||||
DS_ROLE_PRIMARY_DOMAIN_GUID_PRESENT = 0x01000000
|
||||
} dssetup_DsRoleFlags;
|
||||
|
||||
typedef struct {
|
||||
dssetup_DsRole role;
|
||||
dssetup_DsRoleFlags flags;
|
||||
[charset(UTF16),string] uint16 *domain;
|
||||
[charset(UTF16),string] uint16 *dns_domain;
|
||||
[charset(UTF16),string] uint16 *forest;
|
||||
GUID domain_guid;
|
||||
} dssetup_DsRolePrimaryDomInfoBasic;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
DS_ROLE_NOT_UPGRADING = 0,
|
||||
DS_ROLE_UPGRADING = 1
|
||||
} dssetup_DsUpgrade;
|
||||
|
||||
typedef enum {
|
||||
DS_ROLE_PREVIOUS_UNKNOWN = 0,
|
||||
DS_ROLE_PREVIOUS_PRIMARY = 1,
|
||||
DS_ROLE_PREVIOUS_BACKUP = 2
|
||||
} dssetup_DsPrevious;
|
||||
|
||||
typedef struct {
|
||||
dssetup_DsUpgrade upgrading;
|
||||
dssetup_DsPrevious previous_role;
|
||||
} dssetup_DsRoleUpgradeStatus;
|
||||
|
||||
typedef enum {
|
||||
DS_ROLE_OP_IDLE = 0,
|
||||
DS_ROLE_OP_ACTIVE = 1,
|
||||
DS_ROLE_OP_NEEDS_REBOOT = 2
|
||||
} dssetup_DsRoleOp;
|
||||
|
||||
typedef struct {
|
||||
dssetup_DsRoleOp status;
|
||||
} dssetup_DsRoleOpStatus;
|
||||
|
||||
typedef enum {
|
||||
DS_ROLE_BASIC_INFORMATION = 1,
|
||||
DS_ROLE_UPGRADE_STATUS = 2,
|
||||
DS_ROLE_OP_STATUS = 3
|
||||
} dssetup_DsRoleInfoLevel;
|
||||
|
||||
typedef [switch_type(dssetup_DsRoleInfoLevel)] union {
|
||||
[case(DS_ROLE_BASIC_INFORMATION)] dssetup_DsRolePrimaryDomInfoBasic basic;
|
||||
[case(DS_ROLE_UPGRADE_STATUS)] dssetup_DsRoleUpgradeStatus upgrade;
|
||||
[case(DS_ROLE_OP_STATUS)] dssetup_DsRoleOpStatus opstatus;
|
||||
} dssetup_DsRoleInfo;
|
||||
|
||||
WERROR dssetup_DsRoleGetPrimaryDomainInformation(
|
||||
[in] dssetup_DsRoleInfoLevel level,
|
||||
[out,switch_is(level),unique] dssetup_DsRoleInfo *info
|
||||
);
|
||||
|
||||
/*
|
||||
w2k3 has removed all the calls below from their implementation.
|
||||
These stubs are left here only as a way of documenting the names
|
||||
of the calls in case they ever turn up on the wire.
|
||||
*/
|
||||
WERROR dssetup_DsRoleDnsNameToFlatName();
|
||||
WERROR dssetup_DsRoleDcAsDc();
|
||||
WERROR dssetup_DsRoleDcAsReplica();
|
||||
WERROR dssetup_DsRoleDemoteDc();
|
||||
WERROR dssetup_DsRoleGetDcOperationProgress();
|
||||
WERROR dssetup_DsRoleGetDcOperationResults();
|
||||
WERROR dssetup_DsRoleCancel();
|
||||
WERROR dssetup_DsRoleServerSaveStateForUpgrade();
|
||||
WERROR dssetup_DsRoleUpgradeDownlevelServer();
|
||||
WERROR dssetup_DsRoleAbortDownlevelServerUpgrade();
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
|
||||
[
|
||||
uuid("60a15ec5-4de8-11d7-a637-005056a20182"),
|
||||
endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:", "ncalrpc:"),
|
||||
pointer_default(unique),
|
||||
version(1.0),
|
||||
helpstring("Simple echo pipe")
|
||||
]
|
||||
interface rpcecho
|
||||
{
|
||||
/* Add one to an integer */
|
||||
void echo_AddOne(
|
||||
[in] uint32 in_data,
|
||||
[out] uint32 *out_data
|
||||
);
|
||||
/* Echo an array of bytes back at the caller */
|
||||
void echo_EchoData(
|
||||
[in] uint32 len,
|
||||
[in] [size_is(len)] uint8 in_data[],
|
||||
[out] [size_is(len)] uint8 out_data[]
|
||||
);
|
||||
/* Sink data to the server */
|
||||
void echo_SinkData(
|
||||
[in] uint32 len,
|
||||
[in,size_is(len)] uint8 data[]
|
||||
);
|
||||
/* Source data from server */
|
||||
void echo_SourceData(
|
||||
[in] uint32 len,
|
||||
[out,size_is(len)] uint8 data[]
|
||||
);
|
||||
|
||||
/* test strings */
|
||||
void echo_TestCall (
|
||||
[in,string,charset(UTF16)] uint16 *s1,
|
||||
[out,string,charset(UTF16)] uint16 **s2
|
||||
);
|
||||
|
||||
|
||||
/* test some alignment issues */
|
||||
typedef struct {
|
||||
uint8 v;
|
||||
} echo_info1;
|
||||
|
||||
typedef struct {
|
||||
uint16 v;
|
||||
} echo_info2;
|
||||
|
||||
typedef struct {
|
||||
uint32 v;
|
||||
} echo_info3;
|
||||
|
||||
typedef struct {
|
||||
hyper v;
|
||||
} echo_info4;
|
||||
|
||||
typedef struct {
|
||||
uint8 v1;
|
||||
hyper v2;
|
||||
} echo_info5;
|
||||
|
||||
typedef struct {
|
||||
uint8 v1;
|
||||
echo_info1 info1;
|
||||
} echo_info6;
|
||||
|
||||
typedef struct {
|
||||
uint8 v1;
|
||||
echo_info4 info4;
|
||||
} echo_info7;
|
||||
|
||||
typedef [switch_type(uint16)] union {
|
||||
[case(1)] echo_info1 info1;
|
||||
[case(2)] echo_info2 info2;
|
||||
[case(3)] echo_info3 info3;
|
||||
[case(4)] echo_info4 info4;
|
||||
[case(5)] echo_info5 info5;
|
||||
[case(6)] echo_info6 info6;
|
||||
[case(7)] echo_info7 info7;
|
||||
} echo_Info;
|
||||
|
||||
NTSTATUS echo_TestCall2 (
|
||||
[in] uint16 level,
|
||||
[out,switch_is(level)] echo_Info *info
|
||||
);
|
||||
|
||||
uint32 echo_TestSleep(
|
||||
[in] uint32 seconds
|
||||
);
|
||||
|
||||
typedef enum {
|
||||
ECHO_ENUM1 = 1,
|
||||
ECHO_ENUM2 = 2
|
||||
} echo_Enum1;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
ECHO_ENUM1_32 = 1,
|
||||
ECHO_ENUM2_32 = 2
|
||||
} echo_Enum1_32;
|
||||
|
||||
typedef struct {
|
||||
echo_Enum1 e1;
|
||||
echo_Enum1_32 e2;
|
||||
} echo_Enum2;
|
||||
|
||||
typedef [switch_type(uint16)] union {
|
||||
[case(ECHO_ENUM1)] echo_Enum1 e1;
|
||||
[case(ECHO_ENUM2)] echo_Enum2 e2;
|
||||
} echo_Enum3;
|
||||
|
||||
void echo_TestEnum(
|
||||
[in,out,ref] echo_Enum1 *foo1,
|
||||
[in,out,ref] echo_Enum2 *foo2,
|
||||
[in,out,ref,switch_is(*foo1)] echo_Enum3 *foo3
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
uint32 x;
|
||||
[size_is(x)] uint16 surrounding[*];
|
||||
} echo_Surrounding;
|
||||
|
||||
void echo_TestSurrounding(
|
||||
[in,out,ref] echo_Surrounding *data
|
||||
);
|
||||
|
||||
uint16 echo_TestDoublePointer([in] uint16 ***data);
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
IDL definitions from original packet-dcerpc-efs.c
|
||||
by Jean-Baptiste Marchand
|
||||
*/
|
||||
|
||||
import "security.idl";
|
||||
|
||||
[
|
||||
uuid("c681d488-d850-11d0-8c52-00c04fd90f7e"),
|
||||
version(1.0),
|
||||
pointer_default(unique)
|
||||
] interface efs
|
||||
{
|
||||
|
||||
WERROR EfsRpcOpenFileRaw(
|
||||
[out,ref] policy_handle *pvContext,
|
||||
[in] [charset(UTF16),string] uint16 FileName[],
|
||||
[in] uint32 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] [charset(UTF16),string] uint16 Filename[]
|
||||
);
|
||||
|
||||
WERROR EfsRpcDecryptFileSrv(
|
||||
[in] [charset(UTF16),string] uint16 FileName[],
|
||||
[in] uint32 Reserved
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
uint32 cbData;
|
||||
[size_is(cbData), unique] uint8 *pbData;
|
||||
} EFS_HASH_BLOB;
|
||||
|
||||
typedef struct {
|
||||
uint32 cbTotalLength;
|
||||
[unique] dom_sid *pUserSid;
|
||||
[unique] EFS_HASH_BLOB *pHash;
|
||||
[unique] [charset(UTF16),string] uint16 *lpDisplayInformation;
|
||||
} ENCRYPTION_CERTIFICATE_HASH;
|
||||
|
||||
typedef struct {
|
||||
uint32 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] [charset(UTF16),string] uint16 FileName[],
|
||||
[out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers
|
||||
);
|
||||
|
||||
WERROR EfsRpcQueryRecoveryAgents(
|
||||
[in] [charset(UTF16),string] uint16 FileName[],
|
||||
[out,ref,unique] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents
|
||||
);
|
||||
|
||||
WERROR EfsRpcRemoveUsersFromFile(
|
||||
[in] [charset(UTF16),string] uint16 FileName[]
|
||||
/* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
|
||||
);
|
||||
|
||||
WERROR EfsRpcAddUsersToFile(
|
||||
[in] [charset(UTF16),string] uint16 FileName[]
|
||||
/* [in] ENCRYPTION_CERTIFICATE_LIST Hashes*/
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
uint32 dwCertEncodingType;
|
||||
uint32 cbData;
|
||||
[size_is(cbData)] [unique] uint8 *pbData;
|
||||
} EFS_CERTIFICATE_BLOB;
|
||||
|
||||
typedef struct {
|
||||
uint32 TotalLength;
|
||||
[unique] dom_sid *pUserSid;
|
||||
[unique] EFS_CERTIFICATE_BLOB *pCertBlob;
|
||||
} ENCRYPTION_CERTIFICATE;
|
||||
|
||||
WERROR EfsRpcSetFileEncryptionKey(
|
||||
[in] [unique] ENCRYPTION_CERTIFICATE *pEncryptionCertificate
|
||||
);
|
||||
|
||||
WERROR EfsRpcNotSupported(
|
||||
);
|
||||
|
||||
WERROR EfsRpcFileKeyInfo(
|
||||
);
|
||||
|
||||
WERROR EfsRpcDuplicateEncryptionInfoFile(
|
||||
);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,302 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
endpoint mapper interface
|
||||
Related links:
|
||||
http://www.opengroup.org/onlinepubs/9629399/apdxl.htm : Details on towers
|
||||
http://www.opengroup.org/onlinepubs/9629399/chap6.htm#tagcjh_11_02_03_01: binding strings
|
||||
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("e1af8308-5d1f-11c9-91a4-08002b14a0fa"),
|
||||
version(3.0),
|
||||
endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]",
|
||||
"ncalrpc:[EPMAPPER]"),
|
||||
helpstring("EndPoint Mapper"),
|
||||
pointer_default(ptr)
|
||||
]
|
||||
interface epmapper
|
||||
{
|
||||
|
||||
/*
|
||||
note that the following IDL won't work in MIDL, and in fact
|
||||
that the full towers/floors representation of epm cannot be
|
||||
represented in MIDL at all. I decided to represent it using
|
||||
the extended IDL syntax in pidl to make it easier to work
|
||||
with.
|
||||
*/
|
||||
|
||||
const int EPMAPPER_STATUS_NO_MORE_ENTRIES = 0x16c9a0d6;
|
||||
const int EPMAPPER_STATUS_NO_MEMORY = 0x16C9A012;
|
||||
const int EPMAPPER_STATUS_OK = 0;
|
||||
|
||||
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
|
||||
/* Level 4 and higher */
|
||||
EPM_PROTOCOL_DNET_NSP = 0x04,
|
||||
EPM_PROTOCOL_OSI_TP4 = 0x05,
|
||||
EPM_PROTOCOL_OSI_CLNS = 0x06,
|
||||
EPM_PROTOCOL_TCP = 0x07,
|
||||
EPM_PROTOCOL_UDP = 0x08,
|
||||
EPM_PROTOCOL_IP = 0x09,
|
||||
/* These 4 are protocol identifiers, always at level 3 or lower */
|
||||
EPM_PROTOCOL_NCADG = 0x0a, /* Connectionless RPC */
|
||||
EPM_PROTOCOL_NCACN = 0x0b,
|
||||
EPM_PROTOCOL_NCALRPC = 0x0c, /* Local RPC */
|
||||
EPM_PROTOCOL_UUID = 0x0d,
|
||||
EPM_PROTOCOL_IPX = 0x0e,
|
||||
EPM_PROTOCOL_SMB = 0x0f,
|
||||
EPM_PROTOCOL_PIPE = 0x10,
|
||||
EPM_PROTOCOL_NETBIOS = 0x11,
|
||||
EPM_PROTOCOL_NETBEUI = 0x12,
|
||||
EPM_PROTOCOL_SPX = 0x13,
|
||||
EPM_PROTOCOL_NB_IPX = 0x14, /* NetBIOS over IPX */
|
||||
EPM_PROTOCOL_DSP = 0x16, /* AppleTalk Data Stream Protocol */
|
||||
EPM_PROTOCOL_DDP = 0x17, /* AppleTalk Data Datagram Protocol */
|
||||
EPM_PROTOCOL_APPLETALK = 0x18, /* AppleTalk */
|
||||
EPM_PROTOCOL_VINES_SPP = 0x1a,
|
||||
EPM_PROTOCOL_VINES_IPC = 0x1b, /* Inter Process Communication */
|
||||
EPM_PROTOCOL_STREETTALK = 0x1c, /* Vines Streettalk */
|
||||
EPM_PROTOCOL_HTTP = 0x1f,
|
||||
EPM_PROTOCOL_UNIX_DS = 0x20, /* Unix domain socket */
|
||||
EPM_PROTOCOL_NULL = 0x21
|
||||
} epm_protocol;
|
||||
|
||||
typedef struct {
|
||||
/*FIXME */
|
||||
} epm_rhs_dnet_nsp;
|
||||
|
||||
typedef struct {
|
||||
/*FIXME*/
|
||||
} epm_rhs_osi_tp4;
|
||||
|
||||
typedef struct {
|
||||
/*FIXME*/
|
||||
} epm_rhs_osi_clns;
|
||||
|
||||
typedef struct {
|
||||
uint16 port;
|
||||
} epm_rhs_udp;
|
||||
|
||||
typedef struct {
|
||||
uint16 port;
|
||||
} epm_rhs_tcp;
|
||||
|
||||
typedef struct {
|
||||
ipv4address ipaddr;
|
||||
} epm_rhs_ip;
|
||||
|
||||
typedef struct {
|
||||
uint16 minor_version;
|
||||
} epm_rhs_ncadg;
|
||||
|
||||
typedef struct {
|
||||
uint16 minor_version;
|
||||
} epm_rhs_ncacn;
|
||||
|
||||
typedef struct {
|
||||
[flag(NDR_REMAINING)] DATA_BLOB unknown;
|
||||
} epm_rhs_uuid;
|
||||
|
||||
typedef struct {
|
||||
/*FIXME */
|
||||
} epm_rhs_ipx;
|
||||
|
||||
typedef struct {
|
||||
astring unc;
|
||||
} epm_rhs_smb;
|
||||
|
||||
typedef struct {
|
||||
astring path;
|
||||
} epm_rhs_pipe;
|
||||
|
||||
typedef struct {
|
||||
astring name;
|
||||
} epm_rhs_netbios;
|
||||
|
||||
typedef struct {
|
||||
} epm_rhs_netbeui;
|
||||
|
||||
typedef struct {
|
||||
} epm_rhs_spx;
|
||||
|
||||
typedef struct {
|
||||
} epm_rhs_nb_ipx;
|
||||
|
||||
typedef struct {
|
||||
uint16 port;
|
||||
} epm_rhs_http;
|
||||
|
||||
typedef struct {
|
||||
astring path;
|
||||
} epm_rhs_unix_ds;
|
||||
|
||||
typedef struct {
|
||||
} epm_rhs_null;
|
||||
|
||||
typedef struct {
|
||||
uint16 minor_version;
|
||||
} epm_rhs_ncalrpc;
|
||||
|
||||
typedef struct {
|
||||
} epm_rhs_appletalk;
|
||||
|
||||
typedef struct {
|
||||
} epm_rhs_atalk_stream;
|
||||
|
||||
typedef struct {
|
||||
} epm_rhs_atalk_datagram;
|
||||
|
||||
typedef struct {
|
||||
uint16 port;
|
||||
} epm_rhs_vines_spp;
|
||||
|
||||
typedef struct {
|
||||
uint16 port;
|
||||
} epm_rhs_vines_ipc;
|
||||
|
||||
typedef struct {
|
||||
astring streettalk;
|
||||
} epm_rhs_streettalk;
|
||||
|
||||
typedef [flag(NDR_BIG_ENDIAN),nodiscriminant] union {
|
||||
[case(EPM_PROTOCOL_DNET_NSP)] epm_rhs_dnet_nsp dnet_nsp;
|
||||
[case(EPM_PROTOCOL_OSI_TP4)] epm_rhs_osi_tp4 osi_tp4;
|
||||
[case(EPM_PROTOCOL_OSI_CLNS)] epm_rhs_osi_clns osi_clns;
|
||||
[case(EPM_PROTOCOL_TCP)] epm_rhs_tcp tcp;
|
||||
[case(EPM_PROTOCOL_UDP)] epm_rhs_udp udp;
|
||||
[case(EPM_PROTOCOL_IP)] epm_rhs_ip ip;
|
||||
[case(EPM_PROTOCOL_NCADG)] epm_rhs_ncadg ncadg;
|
||||
[case(EPM_PROTOCOL_NCACN)] epm_rhs_ncacn ncacn;
|
||||
[case(EPM_PROTOCOL_NCALRPC)] epm_rhs_ncalrpc ncalrpc;
|
||||
[case(EPM_PROTOCOL_UUID)] epm_rhs_uuid uuid;
|
||||
[case(EPM_PROTOCOL_IPX)] epm_rhs_ipx ipx;
|
||||
[case(EPM_PROTOCOL_SMB)] epm_rhs_smb smb;
|
||||
[case(EPM_PROTOCOL_PIPE)] epm_rhs_pipe pipe;
|
||||
[case(EPM_PROTOCOL_NETBIOS)] epm_rhs_netbios netbios;
|
||||
[case(EPM_PROTOCOL_NETBEUI)] epm_rhs_netbeui netbeui;
|
||||
[case(EPM_PROTOCOL_SPX)] epm_rhs_spx spx;
|
||||
[case(EPM_PROTOCOL_NB_IPX)] epm_rhs_nb_ipx nb_ipx;
|
||||
[case(EPM_PROTOCOL_DSP)] epm_rhs_atalk_stream atalk_stream;
|
||||
[case(EPM_PROTOCOL_DDP)] epm_rhs_atalk_datagram atalk_datagram;
|
||||
[case(EPM_PROTOCOL_APPLETALK)] epm_rhs_appletalk appletalk;
|
||||
[case(EPM_PROTOCOL_VINES_SPP)] epm_rhs_vines_spp vines_spp;
|
||||
[case(EPM_PROTOCOL_VINES_IPC)] epm_rhs_vines_ipc vines_ipc;
|
||||
[case(EPM_PROTOCOL_STREETTALK)] epm_rhs_streettalk streettalk;
|
||||
[case(EPM_PROTOCOL_HTTP)] epm_rhs_http http;
|
||||
[case(EPM_PROTOCOL_UNIX_DS)] epm_rhs_unix_ds unix_ds;
|
||||
[case(EPM_PROTOCOL_NULL)] epm_rhs_null null;
|
||||
[default] [flag(NDR_REMAINING)] DATA_BLOB unknown;
|
||||
} epm_rhs;
|
||||
|
||||
typedef struct {
|
||||
epm_protocol protocol;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB lhs_data;
|
||||
} epm_lhs;
|
||||
|
||||
typedef struct {
|
||||
[subcontext(2)] epm_lhs lhs;
|
||||
[subcontext(2),switch_is(r->lhs.protocol)] epm_rhs rhs;
|
||||
} epm_floor;
|
||||
|
||||
/* note that the NDR_NOALIGN flag is inherited by all nested
|
||||
structures. All of the towers/floors stuff is
|
||||
non-aligned. I wonder what sort of wicked substance these
|
||||
guys were smoking?
|
||||
*/
|
||||
typedef [gensize,flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
|
||||
uint16 num_floors;
|
||||
epm_floor floors[num_floors];
|
||||
} epm_tower;
|
||||
|
||||
typedef struct {
|
||||
[value(ndr_size_epm_tower(&tower, ndr->flags))] uint32 tower_length;
|
||||
[subcontext(4)] epm_tower tower;
|
||||
} epm_twr_t;
|
||||
|
||||
typedef struct {
|
||||
GUID object;
|
||||
epm_twr_t *tower;
|
||||
ascstr2 annotation;
|
||||
} epm_entry_t;
|
||||
|
||||
typedef struct {
|
||||
GUID uuid;
|
||||
uint16 vers_major;
|
||||
uint16 vers_minor;
|
||||
} rpc_if_id_t;
|
||||
|
||||
/**********************/
|
||||
/* Function 0x0 */
|
||||
error_status_t epm_Insert(
|
||||
[in] uint32 num_ents,
|
||||
[in,size_is(num_ents)] epm_entry_t entries[],
|
||||
[in] uint32 replace
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function 0x1 */
|
||||
error_status_t epm_Delete(
|
||||
[in] uint32 num_ents,
|
||||
[in, size_is(num_ents)] epm_entry_t entries[]
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function 0x02 */
|
||||
error_status_t epm_Lookup(
|
||||
[in] uint32 inquiry_type,
|
||||
[in,ptr] GUID *object,
|
||||
[in,ptr] rpc_if_id_t *interface_id,
|
||||
[in] uint32 vers_option,
|
||||
[in,out] policy_handle *entry_handle,
|
||||
[in] uint32 max_ents,
|
||||
[out] uint32 *num_ents,
|
||||
[out, length_is(*num_ents), size_is(max_ents)] epm_entry_t entries[]
|
||||
);
|
||||
|
||||
|
||||
/**********************/
|
||||
/* Function 0x03 */
|
||||
|
||||
typedef struct {
|
||||
epm_twr_t *twr;
|
||||
} epm_twr_p_t;
|
||||
|
||||
error_status_t epm_Map(
|
||||
[in,ptr] GUID *object,
|
||||
[in,ptr] epm_twr_t *map_tower,
|
||||
[in,out] policy_handle *entry_handle,
|
||||
[in] uint32 max_towers,
|
||||
[out] uint32 *num_towers,
|
||||
[out, length_is(*num_towers), size_is(max_towers)] epm_twr_p_t towers[]
|
||||
);
|
||||
|
||||
|
||||
/**********************/
|
||||
/* Function 0x04 */
|
||||
error_status_t epm_LookupHandleFree(
|
||||
[in,out] policy_handle *entry_handle
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function 0x05 */
|
||||
error_status_t epm_InqObject(
|
||||
[in] GUID *epm_object
|
||||
);
|
||||
|
||||
|
||||
/**********************/
|
||||
/* Function 0x06 */
|
||||
error_status_t epm_MgmtDelete(
|
||||
[in] uint32 object_speced,
|
||||
[in,ptr] GUID *object,
|
||||
[in,ptr] epm_twr_t *tower
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function 0x07 */
|
||||
error_status_t epm_MapAuth();
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
eventlog interface definition
|
||||
*/
|
||||
|
||||
import "lsa.idl", "security.idl";
|
||||
|
||||
[ uuid("82273fdc-e32a-18c3-3f78-827929dc23ea"),
|
||||
version(0.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Event Logger")
|
||||
] interface eventlog
|
||||
{
|
||||
typedef bitmap {
|
||||
EVENTLOG_SEQUENTIAL_READ = 0x0001,
|
||||
EVENTLOG_SEEK_READ = 0x0002,
|
||||
EVENTLOG_FORWARDS_READ = 0x0004,
|
||||
EVENTLOG_BACKWARDS_READ = 0x0008
|
||||
} eventlogReadFlags;
|
||||
|
||||
typedef bitmap {
|
||||
EVENTLOG_SUCCESS = 0x0000,
|
||||
EVENTLOG_ERROR_TYPE = 0x0001,
|
||||
EVENTLOG_WARNING_TYPE = 0x0002,
|
||||
EVENTLOG_INFORMATION_TYPE = 0x0004,
|
||||
EVENTLOG_AUDIT_SUCCESS = 0x0008,
|
||||
EVENTLOG_AUDIT_FAILURE = 0x0010
|
||||
} eventlogEventTypes;
|
||||
|
||||
typedef struct {
|
||||
uint16 unknown0;
|
||||
uint16 unknown1;
|
||||
} eventlog_OpenUnknown0;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 size;
|
||||
uint32 reserved;
|
||||
uint32 record_number;
|
||||
uint32 time_generated;
|
||||
uint32 time_written;
|
||||
uint32 event_id;
|
||||
uint16 event_type;
|
||||
uint16 num_of_strings;
|
||||
uint16 event_category;
|
||||
uint16 reserved_flags;
|
||||
uint32 closing_record_number;
|
||||
uint32 stringoffset;
|
||||
uint32 sid_length;
|
||||
uint32 sid_offset;
|
||||
uint32 data_length;
|
||||
uint32 data_offset;
|
||||
nstring source_name;
|
||||
nstring computer_name;
|
||||
/* FIXME:LOW pidl does not like it anymore nstring strings[num_of_strings]; */
|
||||
astring raw_data;
|
||||
} eventlog_Record;
|
||||
|
||||
/******************/
|
||||
/* Function: 0x00 */
|
||||
NTSTATUS eventlog_ClearEventLogW(
|
||||
[in] policy_handle *handle,
|
||||
[in,unique] lsa_String *unknown
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x01 */
|
||||
NTSTATUS eventlog_BackupEventLogW();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x02 */
|
||||
NTSTATUS eventlog_CloseEventLog(
|
||||
[in,out] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x03 */
|
||||
NTSTATUS eventlog_DeregisterEventSource();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x04 */
|
||||
NTSTATUS eventlog_GetNumRecords(
|
||||
[in] policy_handle *handle,
|
||||
[out] uint32 *number
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x05 */
|
||||
NTSTATUS eventlog_GetOldestRecord();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x06 */
|
||||
NTSTATUS eventlog_ChangeNotify();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x07 */
|
||||
NTSTATUS eventlog_OpenEventLogW(
|
||||
[in,unique] eventlog_OpenUnknown0 *unknown0,
|
||||
[in] lsa_String logname,
|
||||
[in] lsa_String servername,
|
||||
[in] uint32 unknown2,
|
||||
[in] uint32 unknown3,
|
||||
[out] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x08 */
|
||||
NTSTATUS eventlog_RegisterEventSourceW();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x09 */
|
||||
NTSTATUS eventlog_OpenBackupEventLogW();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0a */
|
||||
NTSTATUS eventlog_ReadEventLogW(
|
||||
[in] policy_handle *handle,
|
||||
[in] uint32 flags,
|
||||
[in] uint32 offset,
|
||||
[in] uint32 number_of_bytes,
|
||||
[out,size_is(number_of_bytes)] uint8 *data,
|
||||
[out] uint32 *sent_size,
|
||||
[out] uint32 *real_size
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0b */
|
||||
NTSTATUS eventlog_ReportEventW();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0c */
|
||||
NTSTATUS eventlog_ClearEventLogA();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0d */
|
||||
NTSTATUS eventlog_BackupEventLogA();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0e */
|
||||
NTSTATUS eventlog_OpenEventLogA();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0f */
|
||||
NTSTATUS eventlog_RegisterEventSourceA();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x10 */
|
||||
NTSTATUS eventlog_OpenBackupEventLogA();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x11 */
|
||||
NTSTATUS eventlog_ReadEventLogA();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x12 */
|
||||
NTSTATUS eventlog_ReportEventA();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x13 */
|
||||
NTSTATUS eventlog_RegisterClusterSvc();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x14 */
|
||||
NTSTATUS eventlog_DeregisterClusterSvc();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x15 */
|
||||
NTSTATUS eventlog_WriteClusterEvents();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x16 */
|
||||
NTSTATUS eventlog_GetLogIntormation();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x17 */
|
||||
NTSTATUS eventlog_FlushEventLog(
|
||||
[in] policy_handle *handle
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
[
|
||||
uuid("d049b186-814f-11d1-9a3c-00c04fc9b232"),
|
||||
version(1.1),
|
||||
endpoint("ncacn_ip_tcp:", "ncalrpc:"),
|
||||
helpstring("File Replication API"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface frsapi
|
||||
{
|
||||
/****************/
|
||||
/* Function 0x00 */
|
||||
void FRSAPI_VERIFY_PROMOTION();
|
||||
|
||||
/****************/
|
||||
/* Function 0x01 */
|
||||
void FRSAPI_PROMOTION_STATUS();
|
||||
|
||||
/****************/
|
||||
/* Function 0x02 */
|
||||
void FRSAPI_START_DEMOTION();
|
||||
|
||||
/****************/
|
||||
/* Function 0x03 */
|
||||
void FRSAPI_COMMIT_DEMOTION();
|
||||
|
||||
/****************/
|
||||
/* Function 0x04 */
|
||||
void FRSAPI_SET_DS_POLLING_INTERVAL_W();
|
||||
|
||||
/****************/
|
||||
/* Function 0x05 */
|
||||
void FRSAPI_GET_DS_POLLING_INTERVAL_W();
|
||||
|
||||
/****************/
|
||||
/* Function 0x06 */
|
||||
void FRSAPI_VERIFY_PROMOTION_W();
|
||||
|
||||
/****************/
|
||||
/* Function 0x07 */
|
||||
void FRSAPI_INFO_W();
|
||||
|
||||
/****************/
|
||||
/* Function 0x08 */
|
||||
void FRSAPI_IS_PATH_REPLICATED();
|
||||
|
||||
/****************/
|
||||
/* Function 0x09 */
|
||||
void FRSAPI_WRITER_COMMAND();
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
[
|
||||
uuid("f5cc59b4-4264-101a-8c59-08002b2f8426"),
|
||||
version(1.1),
|
||||
endpoint("ncacn_ip_tcp:", "ncalrpc:"),
|
||||
helpstring("File Replication Service"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface frsrpc
|
||||
{
|
||||
/*****************/
|
||||
/* Function 0x00 */
|
||||
void FRSRPC_SEND_COMM_PKT();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x01 */
|
||||
void FRSRPC_VERIFY_PROMOTION_PARENT();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x02 */
|
||||
void FRSRPC_START_PROMOTION_PARENT();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x03 */
|
||||
void FRSRPC_NOP();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x04 */
|
||||
void FRSRPC_BACKUP_COMPLETE();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x05 */
|
||||
void FRSRPC_BACKUP_COMPLETE_5();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x06 */
|
||||
void FRSRPC_BACKUP_COMPLETE_6();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x07 */
|
||||
void FRSRPC_BACKUP_COMPLETE_7();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x08 */
|
||||
void FRSRPC_BACKUP_COMPLETE_8();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x09 */
|
||||
void FRSRPC_BACKUP_COMPLETE_9();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0a */
|
||||
void FRSRPC_VERIFY_PROMOTION_PARENT_EX();
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
#define STR_ASCII LIBNDR_FLAG_STR_ASCII
|
||||
#define STR_LEN4 LIBNDR_FLAG_STR_LEN4
|
||||
#define STR_SIZE4 LIBNDR_FLAG_STR_SIZE4
|
||||
#define STR_SIZE2 LIBNDR_FLAG_STR_SIZE2
|
||||
#define STR_NOTERM LIBNDR_FLAG_STR_NOTERM
|
||||
#define STR_NULLTERM LIBNDR_FLAG_STR_NULLTERM
|
||||
#define STR_BYTESIZE LIBNDR_FLAG_STR_BYTESIZE
|
||||
#define STR_FIXLEN32 LIBNDR_FLAG_STR_FIXLEN32
|
||||
#define STR_FIXLEN15 LIBNDR_FLAG_STR_FIXLEN15
|
||||
#define STR_CONFORMANT LIBNDR_FLAG_STR_CONFORMANT
|
||||
#define STR_CHARLEN LIBNDR_FLAG_STR_CHARLEN
|
||||
#define STR_UTF8 LIBNDR_FLAG_STR_UTF8
|
||||
|
||||
/*
|
||||
a UCS2 string prefixed with [size], 32 bits
|
||||
*/
|
||||
#define lstring [flag(STR_SIZE4)] string
|
||||
|
||||
/*
|
||||
a null terminated UCS2 string
|
||||
*/
|
||||
#define nstring [flag(STR_NULLTERM)] string
|
||||
|
||||
/*
|
||||
fixed length 32 character UCS-2 string
|
||||
*/
|
||||
#define string32 [flag(STR_FIXLEN32)] string
|
||||
|
||||
/*
|
||||
fixed length 16 character ascii string
|
||||
*/
|
||||
#define astring15 [flag(STR_ASCII|STR_FIXLEN15)] string
|
||||
|
||||
/*
|
||||
an ascii string prefixed with [offset] [length], both 32 bits
|
||||
null terminated
|
||||
*/
|
||||
#define ascstr2 [flag(STR_ASCII|STR_LEN4)] string
|
||||
|
||||
/*
|
||||
an ascii string prefixed with [size], 32 bits
|
||||
*/
|
||||
#define asclstr [flag(STR_ASCII|STR_SIZE4)] string
|
||||
|
||||
/*
|
||||
an ascii string prefixed with [size], 16 bits
|
||||
null terminated
|
||||
*/
|
||||
#define ascstr3 [flag(STR_ASCII|STR_SIZE2)] string
|
||||
|
||||
/*
|
||||
an ascii string prefixed with [size] [offset] [length], all 32 bits
|
||||
not null terminated
|
||||
*/
|
||||
#define ascstr_noterm [flag(STR_NOTERM|STR_ASCII|STR_SIZE4|STR_LEN4)] string
|
||||
|
||||
/*
|
||||
a null terminated ascii string
|
||||
*/
|
||||
#define astring [flag(STR_ASCII|STR_NULLTERM)] string
|
||||
|
||||
/*
|
||||
a null terminated UTF8 string
|
||||
*/
|
||||
#define utf8string [flag(STR_UTF8|STR_NULLTERM)] string
|
||||
|
||||
/*
|
||||
a null terminated UCS2 string
|
||||
*/
|
||||
#define nstring_array [flag(STR_NULLTERM)] string_array
|
||||
|
||||
#define NDR_NOALIGN LIBNDR_FLAG_NOALIGN
|
||||
#define NDR_REMAINING LIBNDR_FLAG_REMAINING
|
||||
#define NDR_ALIGN2 LIBNDR_FLAG_ALIGN2
|
||||
#define NDR_ALIGN4 LIBNDR_FLAG_ALIGN4
|
||||
#define NDR_ALIGN8 LIBNDR_FLAG_ALIGN8
|
||||
|
||||
/* this flag is used to force a section of IDL as little endian. It is
|
||||
needed for the epmapper IDL, which is defined as always being LE */
|
||||
#define NDR_LITTLE_ENDIAN LIBNDR_FLAG_LITTLE_ENDIAN
|
||||
#define NDR_BIG_ENDIAN LIBNDR_FLAG_BIGENDIAN
|
||||
|
||||
/*
|
||||
this is used to control formatting of uint8 arrays
|
||||
*/
|
||||
#define NDR_PAHEX LIBNDR_PRINT_ARRAY_HEX
|
||||
@@ -0,0 +1,46 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
initshutdown interface definition
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("894de0c0-0d55-11d3-a322-00c04fa321a1"),
|
||||
version(1.0),
|
||||
endpoint("ncacn_np:[\\pipe\\InitShutdown]"),
|
||||
pointer_default(unique),
|
||||
helpstring("Init shutdown service")
|
||||
] interface initshutdown
|
||||
{
|
||||
typedef struct {
|
||||
[value(strlen_m_term(name))] uint32 name_size;
|
||||
[flag(STR_LEN4|STR_NOTERM)] string name;
|
||||
} initshutdown_String_sub;
|
||||
|
||||
typedef [public] struct {
|
||||
[value(strlen_m(r->name->name)*2)] uint16 name_len;
|
||||
[value(strlen_m_term(r->name->name)*2)] uint16 name_size;
|
||||
initshutdown_String_sub *name;
|
||||
} initshutdown_String;
|
||||
|
||||
WERROR initshutdown_Init(
|
||||
[in,unique] uint16 *hostname,
|
||||
[in,unique] initshutdown_String *message,
|
||||
[in] uint32 timeout,
|
||||
[in] uint8 force_apps,
|
||||
[in] uint8 reboot
|
||||
);
|
||||
|
||||
WERROR initshutdown_Abort(
|
||||
[in,unique] uint16 *server
|
||||
);
|
||||
|
||||
WERROR initshutdown_InitEx(
|
||||
[in,unique] uint16 *hostname,
|
||||
[in,unique] initshutdown_String *message,
|
||||
[in] uint32 timeout,
|
||||
[in] uint8 force_apps,
|
||||
[in] uint8 reboot,
|
||||
[in] uint32 reason
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
import "security.idl", "nbt.idl";
|
||||
|
||||
/*
|
||||
definitions for irpc primitives
|
||||
*/
|
||||
[ uuid("e770c620-0b06-4b5e-8d87-a26e20f28340"),
|
||||
version(1.0),
|
||||
pointer_default(unique)
|
||||
] interface irpc
|
||||
{
|
||||
typedef bitmap {
|
||||
IRPC_FLAG_REPLY = 0x0001
|
||||
} irpc_flags;
|
||||
|
||||
typedef [public,noejs] struct {
|
||||
GUID uuid;
|
||||
uint32 if_version;
|
||||
uint32 callnum;
|
||||
uint32 callid;
|
||||
irpc_flags flags;
|
||||
NTSTATUS status;
|
||||
} irpc_header;
|
||||
|
||||
/******************************************************
|
||||
uptime call - supported by all messaging servers
|
||||
*******************************************************/
|
||||
void irpc_uptime([out,ref] NTTIME *start_time);
|
||||
|
||||
/******************************************************
|
||||
management calls for the nbt server
|
||||
******************************************************/
|
||||
typedef [v1_enum] enum {
|
||||
NBTD_INFO_STATISTICS
|
||||
} nbtd_info_level;
|
||||
|
||||
typedef struct {
|
||||
hyper total_received;
|
||||
hyper total_sent;
|
||||
hyper query_count;
|
||||
hyper register_count;
|
||||
hyper release_count;
|
||||
} nbtd_statistics;
|
||||
|
||||
typedef union {
|
||||
[case(NBTD_INFO_STATISTICS)] nbtd_statistics *stats;
|
||||
} nbtd_info;
|
||||
|
||||
void nbtd_information(
|
||||
[in] nbtd_info_level level,
|
||||
[out,switch_is(level)] nbtd_info info
|
||||
);
|
||||
|
||||
void nbtd_getdcname(
|
||||
[in] astring domainname,
|
||||
[in] astring ip_address,
|
||||
[in] astring my_computername,
|
||||
[in] astring my_accountname,
|
||||
[in] uint32 account_control,
|
||||
[in] dom_sid *domain_sid,
|
||||
[out,unique] astring *dcname
|
||||
);
|
||||
|
||||
typedef [noejs] struct {
|
||||
ipv4address addr;
|
||||
} nbtd_proxy_wins_addr;
|
||||
|
||||
[noejs] void nbtd_proxy_wins_challenge(
|
||||
[in] nbt_name name,
|
||||
[in,out] uint32 num_addrs,
|
||||
[in,out] nbtd_proxy_wins_addr addrs[num_addrs]
|
||||
);
|
||||
|
||||
[noejs] void nbtd_proxy_wins_release_demand(
|
||||
[in] nbt_name name,
|
||||
[in] uint32 num_addrs,
|
||||
[in] nbtd_proxy_wins_addr addrs[num_addrs]
|
||||
);
|
||||
|
||||
/******************************************************
|
||||
management calls for the smb server
|
||||
******************************************************/
|
||||
typedef [v1_enum] enum {
|
||||
SMBSRV_INFO_SESSIONS,
|
||||
SMBSRV_INFO_TCONS
|
||||
} smbsrv_info_level;
|
||||
|
||||
typedef struct {
|
||||
hyper vuid;
|
||||
astring account_name;
|
||||
astring domain_name;
|
||||
astring client_ip;
|
||||
NTTIME connect_time;
|
||||
NTTIME auth_time;
|
||||
NTTIME last_use_time;
|
||||
} smbsrv_session_info;
|
||||
|
||||
typedef struct {
|
||||
uint32 num_sessions;
|
||||
[size_is(num_sessions)] smbsrv_session_info *sessions;
|
||||
} smbsrv_sessions;
|
||||
|
||||
typedef struct {
|
||||
uint32 tid;
|
||||
astring share_name;
|
||||
astring client_ip;
|
||||
NTTIME connect_time;
|
||||
NTTIME last_use_time;
|
||||
} smbsrv_tcon_info;
|
||||
|
||||
typedef struct {
|
||||
uint32 num_tcons;
|
||||
[size_is(num_tcons)] smbsrv_tcon_info *tcons;
|
||||
} smbsrv_tcons;
|
||||
|
||||
typedef union {
|
||||
[case(SMBSRV_INFO_SESSIONS)] smbsrv_sessions sessions;
|
||||
[case(SMBSRV_INFO_TCONS)] smbsrv_tcons tcons;
|
||||
} smbsrv_info;
|
||||
|
||||
void smbsrv_information(
|
||||
[in] smbsrv_info_level level,
|
||||
[out,switch_is(level)] smbsrv_info info
|
||||
);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
cryptographic key services interface
|
||||
*/
|
||||
|
||||
|
||||
/* Also seen as: 0d72a7d4-6148-11d1-b4aa-00c04fb66ea0 */
|
||||
[
|
||||
uuid("8d0ffe72-d252-11d0-bf8f-00c04fd9126b"),
|
||||
pointer_default(unique),
|
||||
version(1.0),
|
||||
helpstring("Cryptographic Key Services")
|
||||
]
|
||||
interface keysvc
|
||||
{
|
||||
WERROR keysvc_Unknown0();
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
krb5 PAC
|
||||
*/
|
||||
|
||||
#include "idl_types.h"
|
||||
|
||||
import "security.idl", "netlogon.idl", "samr.idl";
|
||||
|
||||
[
|
||||
uuid("12345778-1234-abcd-0000-00000000"),
|
||||
version(0.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Active Directory KRB5 PAC")
|
||||
]
|
||||
interface krb5pac
|
||||
{
|
||||
typedef struct {
|
||||
NTTIME logon_time;
|
||||
[flag(STR_SIZE2|STR_NOTERM|STR_BYTESIZE)] string account_name;
|
||||
} PAC_LOGON_NAME;
|
||||
|
||||
typedef [public,flag(NDR_PAHEX)] struct {
|
||||
uint32 type;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB signature;
|
||||
} PAC_SIGNATURE_DATA;
|
||||
|
||||
typedef [gensize] struct {
|
||||
netr_SamInfo3 info3;
|
||||
dom_sid2 *res_group_dom_sid;
|
||||
samr_RidWithAttributeArray res_groups;
|
||||
} PAC_LOGON_INFO;
|
||||
|
||||
typedef struct {
|
||||
[value(0x00081001)] uint32 unknown1;
|
||||
[value(0xCCCCCCCC)] uint32 unknown2;
|
||||
[value(NDR_ROUND(ndr_size_PAC_LOGON_INFO(info, ndr->flags)+4,8))] uint32 _ndr_size;
|
||||
[value(0x00000000)] uint32 unknown3;
|
||||
PAC_LOGON_INFO *info;
|
||||
} PAC_LOGON_INFO_CTR;
|
||||
|
||||
typedef [public,v1_enum] enum {
|
||||
PAC_TYPE_LOGON_INFO = 1,
|
||||
PAC_TYPE_SRV_CHECKSUM = 6,
|
||||
PAC_TYPE_KDC_CHECKSUM = 7,
|
||||
PAC_TYPE_LOGON_NAME = 10
|
||||
} PAC_TYPE;
|
||||
|
||||
typedef [public,nodiscriminant,gensize] union {
|
||||
[case(PAC_TYPE_LOGON_INFO)] PAC_LOGON_INFO_CTR logon_info;
|
||||
[case(PAC_TYPE_SRV_CHECKSUM)] PAC_SIGNATURE_DATA srv_cksum;
|
||||
[case(PAC_TYPE_KDC_CHECKSUM)] PAC_SIGNATURE_DATA kdc_cksum;
|
||||
[case(PAC_TYPE_LOGON_NAME)] PAC_LOGON_NAME logon_name;
|
||||
} PAC_INFO;
|
||||
|
||||
typedef [public,nopush,nopull,noprint] struct {
|
||||
PAC_TYPE type;
|
||||
[value(_ndr_size_PAC_INFO(info, type, 0))] uint32 _ndr_size;
|
||||
[relative,switch_is(type),subcontext(0),subcontext_size(_subcontext_size_PAC_INFO(r, ndr->flags)),flag(NDR_ALIGN8)] PAC_INFO *info;
|
||||
[value(0)] uint32 _pad; /* Top half of a 64 bit pointer? */
|
||||
} PAC_BUFFER;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 num_buffers;
|
||||
uint32 version;
|
||||
PAC_BUFFER buffers[num_buffers];
|
||||
} PAC_DATA;
|
||||
|
||||
typedef struct {
|
||||
[flag(NDR_REMAINING)] DATA_BLOB remaining;
|
||||
} DATA_BLOB_REM;
|
||||
|
||||
typedef [public] struct {
|
||||
PAC_TYPE type;
|
||||
uint32 ndr_size;
|
||||
[relative,subcontext(0),subcontext_size(NDR_ROUND(r->ndr_size,8)),flag(NDR_ALIGN8)] DATA_BLOB_REM *info;
|
||||
[value(0)] uint32 _pad; /* Top half of a 64 bit pointer? */
|
||||
} PAC_BUFFER_RAW;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 num_buffers;
|
||||
uint32 version;
|
||||
PAC_BUFFER_RAW buffers[num_buffers];
|
||||
} PAC_DATA_RAW;
|
||||
|
||||
void decode_pac(
|
||||
[in] PAC_DATA pac
|
||||
);
|
||||
|
||||
void decode_pac_raw(
|
||||
[in] PAC_DATA_RAW pac
|
||||
);
|
||||
|
||||
void decode_login_info(
|
||||
[in] PAC_LOGON_INFO logon_info
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,976 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
lsa interface definition
|
||||
*/
|
||||
|
||||
import "security.idl";
|
||||
|
||||
[ uuid("12345778-1234-abcd-ef00-0123456789ab"),
|
||||
version(0.0),
|
||||
endpoint("ncacn_np:[\\pipe\\lsarpc]","ncacn_np:[\\pipe\\netlogon]","ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
|
||||
pointer_default(unique),
|
||||
helpstring("Local Security Authority")
|
||||
] interface lsarpc
|
||||
{
|
||||
declare bitmap security_secinfo;
|
||||
|
||||
typedef [public,noejs] struct {
|
||||
[value(2*strlen_m(string))] uint16 length;
|
||||
[value(2*strlen_m(string))] uint16 size;
|
||||
[charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
|
||||
} lsa_String;
|
||||
|
||||
typedef [public] struct {
|
||||
[value(2*strlen_m(string))] uint16 length;
|
||||
[value(2*(strlen_m(string)+1))] uint16 size;
|
||||
[charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
|
||||
} lsa_StringLarge;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 count;
|
||||
[size_is(count)] lsa_String *names;
|
||||
} lsa_Strings;
|
||||
|
||||
typedef [public] struct {
|
||||
[value(strlen_m(string))] uint16 length;
|
||||
[value(strlen_m(string))] uint16 size;
|
||||
ascstr_noterm *string;
|
||||
} lsa_AsciiString;
|
||||
|
||||
/******************/
|
||||
/* Function: 0x00 */
|
||||
NTSTATUS lsa_Close (
|
||||
[in,out] policy_handle *handle
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x01 */
|
||||
NTSTATUS lsa_Delete (
|
||||
[in] policy_handle *handle
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x02 */
|
||||
typedef struct {
|
||||
uint32 low;
|
||||
uint32 high;
|
||||
} lsa_LUID;
|
||||
|
||||
typedef struct {
|
||||
lsa_StringLarge name;
|
||||
lsa_LUID luid;
|
||||
} lsa_PrivEntry;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] lsa_PrivEntry *privs;
|
||||
} lsa_PrivArray;
|
||||
|
||||
NTSTATUS lsa_EnumPrivs (
|
||||
[in] policy_handle *handle,
|
||||
[in,out] uint32 *resume_handle,
|
||||
[in] uint32 max_count,
|
||||
[out] lsa_PrivArray *privs
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x03 */
|
||||
|
||||
NTSTATUS lsa_QuerySecurity (
|
||||
[in] policy_handle *handle,
|
||||
[in] security_secinfo sec_info,
|
||||
[out,unique] sec_desc_buf *sdbuf
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x04 */
|
||||
NTSTATUS lsa_SetSecObj ();
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x05 */
|
||||
NTSTATUS lsa_ChangePassword ();
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x06 */
|
||||
typedef struct {
|
||||
uint32 len; /* ignored */
|
||||
uint16 impersonation_level;
|
||||
uint8 context_mode;
|
||||
uint8 effective_only;
|
||||
} lsa_QosInfo;
|
||||
|
||||
typedef struct {
|
||||
uint32 len; /* ignored */
|
||||
uint8 *root_dir;
|
||||
[string,charset(UTF16)] uint16 *object_name;
|
||||
uint32 attributes;
|
||||
security_descriptor *sec_desc;
|
||||
lsa_QosInfo *sec_qos;
|
||||
} lsa_ObjectAttribute;
|
||||
|
||||
/* notice the screwup with the system_name - thats why MS created
|
||||
OpenPolicy2 */
|
||||
NTSTATUS lsa_OpenPolicy (
|
||||
[in,unique] uint16 *system_name,
|
||||
[in] lsa_ObjectAttribute *attr,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *handle
|
||||
);
|
||||
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x07 */
|
||||
|
||||
typedef struct {
|
||||
uint32 percent_full;
|
||||
uint32 log_size;
|
||||
NTTIME retention_time;
|
||||
uint8 shutdown_in_progress;
|
||||
NTTIME time_to_shutdown;
|
||||
uint32 next_audit_record;
|
||||
uint32 unknown;
|
||||
} lsa_AuditLogInfo;
|
||||
|
||||
typedef struct {
|
||||
uint32 auditing_mode;
|
||||
[size_is(count)] uint32 *settings;
|
||||
uint32 count;
|
||||
} lsa_AuditEventsInfo;
|
||||
|
||||
typedef struct {
|
||||
lsa_StringLarge name;
|
||||
dom_sid2 *sid;
|
||||
} lsa_DomainInfo;
|
||||
|
||||
typedef struct {
|
||||
lsa_String name;
|
||||
} lsa_PDAccountInfo;
|
||||
|
||||
typedef struct {
|
||||
uint16 unknown; /* an midl padding bug? */
|
||||
uint16 role;
|
||||
} lsa_ServerRole;
|
||||
|
||||
typedef struct {
|
||||
lsa_String source;
|
||||
lsa_String account;
|
||||
} lsa_ReplicaSourceInfo;
|
||||
|
||||
typedef struct {
|
||||
uint32 paged_pool;
|
||||
uint32 non_paged_pool;
|
||||
uint32 min_wss;
|
||||
uint32 max_wss;
|
||||
uint32 pagefile;
|
||||
hyper unknown;
|
||||
} lsa_DefaultQuotaInfo;
|
||||
|
||||
typedef struct {
|
||||
hyper modified_id;
|
||||
NTTIME db_create_time;
|
||||
} lsa_ModificationInfo;
|
||||
|
||||
typedef struct {
|
||||
uint8 shutdown_on_full;
|
||||
} lsa_AuditFullSetInfo;
|
||||
|
||||
typedef struct {
|
||||
uint16 unknown; /* an midl padding bug? */
|
||||
uint8 shutdown_on_full;
|
||||
uint8 log_is_full;
|
||||
} lsa_AuditFullQueryInfo;
|
||||
|
||||
typedef struct {
|
||||
/* it's important that we use the lsa_StringLarge here,
|
||||
* because otherwise windows clients result with such dns hostnames
|
||||
* e.g. w2k3-client.samba4.samba.orgsamba4.samba.org
|
||||
* where it should be
|
||||
* w2k3-client.samba4.samba.org
|
||||
*/
|
||||
lsa_StringLarge name;
|
||||
lsa_StringLarge dns_domain;
|
||||
lsa_StringLarge dns_forest;
|
||||
GUID domain_guid;
|
||||
dom_sid2 *sid;
|
||||
} lsa_DnsDomainInfo;
|
||||
|
||||
typedef enum {
|
||||
LSA_POLICY_INFO_AUDIT_LOG=1,
|
||||
LSA_POLICY_INFO_AUDIT_EVENTS=2,
|
||||
LSA_POLICY_INFO_DOMAIN=3,
|
||||
LSA_POLICY_INFO_PD=4,
|
||||
LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
|
||||
LSA_POLICY_INFO_ROLE=6,
|
||||
LSA_POLICY_INFO_REPLICA=7,
|
||||
LSA_POLICY_INFO_QUOTA=8,
|
||||
LSA_POLICY_INFO_DB=9,
|
||||
LSA_POLICY_INFO_AUDIT_FULL_SET=10,
|
||||
LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
|
||||
LSA_POLICY_INFO_DNS=12
|
||||
} lsaPolicyInfo;
|
||||
|
||||
typedef [switch_type(uint16)] union {
|
||||
[case(LSA_POLICY_INFO_AUDIT_LOG)] lsa_AuditLogInfo audit_log;
|
||||
[case(LSA_POLICY_INFO_AUDIT_EVENTS)] lsa_AuditEventsInfo audit_events;
|
||||
[case(LSA_POLICY_INFO_DOMAIN)] lsa_DomainInfo domain;
|
||||
[case(LSA_POLICY_INFO_PD)] lsa_PDAccountInfo pd;
|
||||
[case(LSA_POLICY_INFO_ACCOUNT_DOMAIN)] lsa_DomainInfo account_domain;
|
||||
[case(LSA_POLICY_INFO_ROLE)] lsa_ServerRole role;
|
||||
[case(LSA_POLICY_INFO_REPLICA)] lsa_ReplicaSourceInfo replica;
|
||||
[case(LSA_POLICY_INFO_QUOTA)] lsa_DefaultQuotaInfo quota;
|
||||
[case(LSA_POLICY_INFO_DB)] lsa_ModificationInfo db;
|
||||
[case(LSA_POLICY_INFO_AUDIT_FULL_SET)] lsa_AuditFullSetInfo auditfullset;
|
||||
[case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] lsa_AuditFullQueryInfo auditfullquery;
|
||||
[case(LSA_POLICY_INFO_DNS)] lsa_DnsDomainInfo dns;
|
||||
} lsa_PolicyInformation;
|
||||
|
||||
NTSTATUS lsa_QueryInfoPolicy (
|
||||
[in] policy_handle *handle,
|
||||
[in] uint16 level,
|
||||
[out,unique,switch_is(level)] lsa_PolicyInformation *info
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x08 */
|
||||
NTSTATUS lsa_SetInfoPolicy ();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x09 */
|
||||
NTSTATUS lsa_ClearAuditLog ();
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0a */
|
||||
NTSTATUS lsa_CreateAccount (
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *sid,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *acct_handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* NOTE: This only returns accounts that have at least
|
||||
one privilege set
|
||||
*/
|
||||
/* Function: 0x0b */
|
||||
typedef struct {
|
||||
dom_sid2 *sid;
|
||||
} lsa_SidPtr;
|
||||
|
||||
typedef [public] struct {
|
||||
[range(0,1000)] uint32 num_sids;
|
||||
[size_is(num_sids)] lsa_SidPtr *sids;
|
||||
} lsa_SidArray;
|
||||
|
||||
NTSTATUS lsa_EnumAccounts (
|
||||
[in] policy_handle *handle,
|
||||
[in,out] uint32 *resume_handle,
|
||||
[in,range(0,8192)] uint32 num_entries,
|
||||
[out] lsa_SidArray *sids
|
||||
);
|
||||
|
||||
|
||||
/*************************************************/
|
||||
/* Function: 0x0c */
|
||||
|
||||
NTSTATUS lsa_CreateTrustedDomain(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_DomainInfo *info,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *trustdom_handle
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0d */
|
||||
|
||||
/* w2k3 treats max_size as max_domains*60 */
|
||||
const int LSA_ENUM_TRUST_DOMAIN_MULTIPLIER = 60;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] lsa_DomainInfo *domains;
|
||||
} lsa_DomainList;
|
||||
|
||||
NTSTATUS lsa_EnumTrustDom (
|
||||
[in] policy_handle *handle,
|
||||
[in,out] uint32 *resume_handle,
|
||||
[in,range(0,1000)] uint32 max_size,
|
||||
[out] lsa_DomainList *domains
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0e */
|
||||
typedef enum {
|
||||
SID_NAME_USE_NONE = 0,/* NOTUSED */
|
||||
SID_NAME_USER = 1, /* user */
|
||||
SID_NAME_DOM_GRP = 2, /* domain group */
|
||||
SID_NAME_DOMAIN = 3, /* domain: don't know what this is */
|
||||
SID_NAME_ALIAS = 4, /* local group */
|
||||
SID_NAME_WKN_GRP = 5, /* well-known group */
|
||||
SID_NAME_DELETED = 6, /* deleted account: needed for c2 rating */
|
||||
SID_NAME_INVALID = 7, /* invalid account */
|
||||
SID_NAME_UNKNOWN = 8, /* oops. */
|
||||
SID_NAME_COMPUTER = 9 /* machine */
|
||||
} lsa_SidType;
|
||||
|
||||
typedef struct {
|
||||
lsa_SidType sid_type;
|
||||
uint32 rid;
|
||||
uint32 sid_index;
|
||||
} lsa_TranslatedSid;
|
||||
|
||||
typedef struct {
|
||||
[range(0,1000)] uint32 count;
|
||||
[size_is(count)] lsa_TranslatedSid *sids;
|
||||
} lsa_TransSidArray;
|
||||
|
||||
const int LSA_REF_DOMAIN_LIST_MULTIPLIER = 32;
|
||||
typedef struct {
|
||||
[range(0,1000)] uint32 count;
|
||||
[size_is(count)] lsa_DomainInfo *domains;
|
||||
uint32 max_size;
|
||||
} lsa_RefDomainList;
|
||||
|
||||
NTSTATUS lsa_LookupNames (
|
||||
[in] policy_handle *handle,
|
||||
[in,range(0,1000)] uint32 num_names,
|
||||
[in,size_is(num_names)] lsa_String names[],
|
||||
[out,unique] lsa_RefDomainList *domains,
|
||||
[in,out] lsa_TransSidArray *sids,
|
||||
[in] uint16 level,
|
||||
[in,out] uint32 *count
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0f */
|
||||
|
||||
typedef struct {
|
||||
lsa_SidType sid_type;
|
||||
lsa_String name;
|
||||
uint32 sid_index;
|
||||
} lsa_TranslatedName;
|
||||
|
||||
typedef struct {
|
||||
[range(0,1000)] uint32 count;
|
||||
[size_is(count)] lsa_TranslatedName *names;
|
||||
} lsa_TransNameArray;
|
||||
|
||||
NTSTATUS lsa_LookupSids (
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_SidArray *sids,
|
||||
[out,unique] lsa_RefDomainList *domains,
|
||||
[in,out] lsa_TransNameArray *names,
|
||||
[in] uint16 level,
|
||||
[in,out] uint32 *count
|
||||
);
|
||||
|
||||
|
||||
/* Function: 0x10 */
|
||||
NTSTATUS lsa_CreateSecret(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_String name,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *sec_handle
|
||||
);
|
||||
|
||||
|
||||
/*****************************************/
|
||||
/* Function: 0x11 */
|
||||
NTSTATUS lsa_OpenAccount (
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *sid,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *acct_handle
|
||||
);
|
||||
|
||||
|
||||
/****************************************/
|
||||
/* Function: 0x12 */
|
||||
|
||||
typedef struct {
|
||||
lsa_LUID luid;
|
||||
uint32 attribute;
|
||||
} lsa_LUIDAttribute;
|
||||
|
||||
typedef struct {
|
||||
[range(0,1000)] uint32 count;
|
||||
uint32 unknown;
|
||||
[size_is(count)] lsa_LUIDAttribute set[*];
|
||||
} lsa_PrivilegeSet;
|
||||
|
||||
NTSTATUS lsa_EnumPrivsAccount (
|
||||
[in] policy_handle *handle,
|
||||
[out,unique] lsa_PrivilegeSet *privs
|
||||
);
|
||||
|
||||
|
||||
/****************************************/
|
||||
/* Function: 0x13 */
|
||||
NTSTATUS lsa_AddPrivilegesToAccount(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_PrivilegeSet *privs
|
||||
);
|
||||
|
||||
|
||||
/****************************************/
|
||||
/* Function: 0x14 */
|
||||
NTSTATUS lsa_RemovePrivilegesFromAccount(
|
||||
[in] policy_handle *handle,
|
||||
[in] uint8 remove_all,
|
||||
[in,unique] lsa_PrivilegeSet *privs
|
||||
);
|
||||
|
||||
/* Function: 0x15 */
|
||||
NTSTATUS lsa_GetQuotasForAccount();
|
||||
|
||||
/* Function: 0x16 */
|
||||
NTSTATUS lsa_SetQuotasForAccount();
|
||||
|
||||
/* Function: 0x17 */
|
||||
NTSTATUS lsa_GetSystemAccessAccount();
|
||||
/* Function: 0x18 */
|
||||
NTSTATUS lsa_SetSystemAccessAccount();
|
||||
|
||||
/* Function: 0x19 */
|
||||
NTSTATUS lsa_OpenTrustedDomain(
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *sid,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *trustdom_handle
|
||||
);
|
||||
|
||||
typedef [flag(NDR_PAHEX)] struct {
|
||||
uint32 length;
|
||||
uint32 size;
|
||||
[size_is(size),length_is(length)] uint8 *data;
|
||||
} lsa_DATA_BUF;
|
||||
|
||||
typedef [flag(NDR_PAHEX)] struct {
|
||||
[range(0,65536)] uint32 size;
|
||||
[size_is(size)] uint8 *data;
|
||||
} lsa_DATA_BUF2;
|
||||
|
||||
typedef enum {
|
||||
LSA_TRUSTED_DOMAIN_INFO_NAME = 1,
|
||||
LSA_TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO = 2,
|
||||
LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET = 3,
|
||||
LSA_TRUSTED_DOMAIN_INFO_PASSWORD = 4,
|
||||
LSA_TRUSTED_DOMAIN_INFO_BASIC = 5,
|
||||
LSA_TRUSTED_DOMAIN_INFO_INFO_EX = 6,
|
||||
LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO = 7,
|
||||
LSA_TRUSTED_DOMAIN_INFO_FULL_INFO = 8,
|
||||
LSA_TRUSTED_DOMAIN_INFO_11 = 11,
|
||||
LSA_TRUSTED_DOMAIN_INFO_INFO_ALL = 12
|
||||
} lsa_TrustDomInfoEnum;
|
||||
|
||||
typedef struct {
|
||||
lsa_StringLarge netbios_name;
|
||||
} lsa_TrustDomainInfoName;
|
||||
|
||||
typedef struct {
|
||||
uint32 posix_offset;
|
||||
} lsa_TrustDomainInfoPosixOffset;
|
||||
|
||||
typedef struct {
|
||||
lsa_DATA_BUF *password;
|
||||
lsa_DATA_BUF *old_password;
|
||||
} lsa_TrustDomainInfoPassword;
|
||||
|
||||
typedef struct {
|
||||
lsa_String netbios_name;
|
||||
dom_sid2 *sid;
|
||||
} lsa_TrustDomainInfoBasic;
|
||||
|
||||
typedef struct {
|
||||
lsa_StringLarge domain_name;
|
||||
lsa_StringLarge netbios_name;
|
||||
dom_sid2 *sid;
|
||||
uint32 trust_direction;
|
||||
uint32 trust_type;
|
||||
uint32 trust_attributes;
|
||||
} lsa_TrustDomainInfoInfoEx;
|
||||
|
||||
typedef struct {
|
||||
NTTIME_hyper last_update_time;
|
||||
uint32 secret_type;
|
||||
lsa_DATA_BUF2 data;
|
||||
} lsa_TrustDomainInfoBuffer;
|
||||
|
||||
typedef struct {
|
||||
uint32 incoming_count;
|
||||
lsa_TrustDomainInfoBuffer *incoming_current_auth_info;
|
||||
lsa_TrustDomainInfoBuffer *incoming_previous_auth_info;
|
||||
uint32 outgoing_count;
|
||||
lsa_TrustDomainInfoBuffer *outgoing_current_auth_info;
|
||||
lsa_TrustDomainInfoBuffer *outgoing_previous_auth_info;
|
||||
} lsa_TrustDomainInfoAuthInfo;
|
||||
|
||||
typedef struct {
|
||||
lsa_TrustDomainInfoInfoEx info_ex;
|
||||
lsa_TrustDomainInfoPosixOffset posix_offset;
|
||||
lsa_TrustDomainInfoAuthInfo auth_info;
|
||||
} lsa_TrustDomainInfoFullInfo;
|
||||
|
||||
typedef struct {
|
||||
lsa_TrustDomainInfoInfoEx info_ex;
|
||||
lsa_DATA_BUF2 data1;
|
||||
} lsa_TrustDomainInfo11;
|
||||
|
||||
typedef struct {
|
||||
lsa_TrustDomainInfoInfoEx info_ex;
|
||||
lsa_DATA_BUF2 data1;
|
||||
lsa_TrustDomainInfoPosixOffset posix_offset;
|
||||
lsa_TrustDomainInfoAuthInfo auth_info;
|
||||
} lsa_TrustDomainInfoInfoAll;
|
||||
|
||||
typedef [switch_type(lsa_TrustDomInfoEnum)] union {
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_NAME)] lsa_TrustDomainInfoName name;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_POSIX_OFFSET)] lsa_TrustDomainInfoPosixOffset posix_offset;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_PASSWORD)] lsa_TrustDomainInfoPassword password;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_BASIC)] lsa_TrustDomainInfoBasic info_basic;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_INFO_EX)] lsa_TrustDomainInfoInfoEx info_ex;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO)] lsa_TrustDomainInfoAuthInfo auth_info;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO)] lsa_TrustDomainInfoFullInfo full_info;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_11)] lsa_TrustDomainInfo11 info11;
|
||||
[case(LSA_TRUSTED_DOMAIN_INFO_INFO_ALL)] lsa_TrustDomainInfoInfoAll info_all;
|
||||
} lsa_TrustedDomainInfo;
|
||||
|
||||
/* Function: 0x1a */
|
||||
NTSTATUS lsa_QueryTrustedDomainInfo(
|
||||
[in] policy_handle *trustdom_handle,
|
||||
[in] lsa_TrustDomInfoEnum level,
|
||||
[out,switch_is(level),unique] lsa_TrustedDomainInfo *info
|
||||
);
|
||||
|
||||
/* Function: 0x1b */
|
||||
NTSTATUS lsa_SetInformationTrustedDomain();
|
||||
|
||||
/* Function: 0x1c */
|
||||
NTSTATUS lsa_OpenSecret(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_String name,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *sec_handle
|
||||
);
|
||||
|
||||
/* Function: 0x1d */
|
||||
|
||||
NTSTATUS lsa_SetSecret(
|
||||
[in] policy_handle *sec_handle,
|
||||
[in,unique] lsa_DATA_BUF *new_val,
|
||||
[in,unique] lsa_DATA_BUF *old_val
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
lsa_DATA_BUF *buf;
|
||||
} lsa_DATA_BUF_PTR;
|
||||
|
||||
/* Function: 0x1e */
|
||||
NTSTATUS lsa_QuerySecret (
|
||||
[in] policy_handle *sec_handle,
|
||||
[in,out,unique] lsa_DATA_BUF_PTR *new_val,
|
||||
[in,out,unique] NTTIME_hyper *new_mtime,
|
||||
[in,out,unique] lsa_DATA_BUF_PTR *old_val,
|
||||
[in,out,unique] NTTIME_hyper *old_mtime
|
||||
);
|
||||
|
||||
/* Function: 0x1f */
|
||||
NTSTATUS lsa_LookupPrivValue(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_String *name,
|
||||
[out] lsa_LUID *luid
|
||||
);
|
||||
|
||||
|
||||
/* Function: 0x20 */
|
||||
NTSTATUS lsa_LookupPrivName (
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_LUID *luid,
|
||||
[out,unique] lsa_StringLarge *name
|
||||
);
|
||||
|
||||
|
||||
/*******************/
|
||||
/* Function: 0x21 */
|
||||
NTSTATUS lsa_LookupPrivDisplayName (
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_String *name,
|
||||
[out,unique] lsa_StringLarge *disp_name,
|
||||
/* see http://www.microsoft.com/globaldev/nlsweb/ for
|
||||
language definitions */
|
||||
[in,out] uint16 *language_id,
|
||||
[in] uint16 unknown
|
||||
);
|
||||
|
||||
/* Function: 0x22 */
|
||||
NTSTATUS lsa_DeleteObject();
|
||||
|
||||
|
||||
/*******************/
|
||||
/* Function: 0x23 */
|
||||
NTSTATUS lsa_EnumAccountsWithUserRight (
|
||||
[in] policy_handle *handle,
|
||||
[in,unique] lsa_String *name,
|
||||
[out] lsa_SidArray *sids
|
||||
);
|
||||
|
||||
/* Function: 0x24 */
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *name;
|
||||
} lsa_RightAttribute;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] lsa_StringLarge *names;
|
||||
} lsa_RightSet;
|
||||
|
||||
NTSTATUS lsa_EnumAccountRights (
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *sid,
|
||||
[out] lsa_RightSet *rights
|
||||
);
|
||||
|
||||
|
||||
/**********************/
|
||||
/* Function: 0x25 */
|
||||
NTSTATUS lsa_AddAccountRights (
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *sid,
|
||||
[in] lsa_RightSet *rights
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function: 0x26 */
|
||||
NTSTATUS lsa_RemoveAccountRights (
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *sid,
|
||||
[in] uint32 unknown,
|
||||
[in] lsa_RightSet *rights
|
||||
);
|
||||
|
||||
/* Function: 0x27 */
|
||||
NTSTATUS lsa_QueryTrustedDomainInfoBySid(
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *dom_sid,
|
||||
[in] lsa_TrustDomInfoEnum level,
|
||||
[out,switch_is(level),unique] lsa_TrustedDomainInfo *info
|
||||
);
|
||||
|
||||
/* Function: 0x28 */
|
||||
NTSTATUS lsa_SetTrustedDomainInfo();
|
||||
/* Function: 0x29 */
|
||||
NTSTATUS lsa_DeleteTrustedDomain(
|
||||
[in] policy_handle *handle,
|
||||
[in] dom_sid2 *dom_sid
|
||||
);
|
||||
|
||||
/* Function: 0x2a */
|
||||
NTSTATUS lsa_StorePrivateData();
|
||||
/* Function: 0x2b */
|
||||
NTSTATUS lsa_RetrievePrivateData();
|
||||
|
||||
|
||||
/**********************/
|
||||
/* Function: 0x2c */
|
||||
NTSTATUS lsa_OpenPolicy2 (
|
||||
[in,unique] [string,charset(UTF16)] uint16 *system_name,
|
||||
[in] lsa_ObjectAttribute *attr,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *handle
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function: 0x2d */
|
||||
typedef struct {
|
||||
lsa_String *string;
|
||||
} lsa_StringPointer;
|
||||
|
||||
NTSTATUS lsa_GetUserName(
|
||||
[in,unique] [string,charset(UTF16)] uint16 *system_name,
|
||||
[in,out,unique] lsa_String *account_name,
|
||||
[in,out,unique] lsa_StringPointer *authority_name
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function: 0x2e */
|
||||
|
||||
NTSTATUS lsa_QueryInfoPolicy2(
|
||||
[in] policy_handle *handle,
|
||||
[in] uint16 level,
|
||||
[out,unique,switch_is(level)] lsa_PolicyInformation *info
|
||||
);
|
||||
|
||||
/* Function 0x2f */
|
||||
NTSTATUS lsa_SetInfoPolicy2();
|
||||
|
||||
/**********************/
|
||||
/* Function 0x30 */
|
||||
NTSTATUS lsa_QueryTrustedDomainInfoByName(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_String trusted_domain,
|
||||
[in] lsa_TrustDomInfoEnum level,
|
||||
[out,unique,switch_is(level)] lsa_TrustedDomainInfo *info
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function 0x31 */
|
||||
NTSTATUS lsa_SetTrustedDomainInfoByName(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_String trusted_domain,
|
||||
[in] lsa_TrustDomInfoEnum level,
|
||||
[in,unique,switch_is(level)] lsa_TrustedDomainInfo *info
|
||||
);
|
||||
|
||||
/* Function 0x32 */
|
||||
|
||||
/* w2k3 treats max_size as max_domains*82 */
|
||||
const int LSA_ENUM_TRUST_DOMAIN_EX_MULTIPLIER = 82;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] lsa_TrustDomainInfoInfoEx *domains;
|
||||
} lsa_DomainListEx;
|
||||
|
||||
NTSTATUS lsa_EnumTrustedDomainsEx (
|
||||
[in] policy_handle *handle,
|
||||
[in,out] uint32 *resume_handle,
|
||||
[out] lsa_DomainListEx *domains,
|
||||
[in] uint32 max_size
|
||||
);
|
||||
|
||||
|
||||
/* Function 0x33 */
|
||||
NTSTATUS lsa_CreateTrustedDomainEx();
|
||||
|
||||
/* Function 0x34 */
|
||||
NTSTATUS lsa_CloseTrustedDomainEx(
|
||||
[in,out] policy_handle *handle
|
||||
);
|
||||
|
||||
/* Function 0x35 */
|
||||
|
||||
/* w2k3 returns either 0x000bbbd000000000 or 0x000a48e800000000
|
||||
for unknown6 - gd */
|
||||
typedef struct {
|
||||
uint32 enforce_restrictions;
|
||||
hyper service_tkt_lifetime;
|
||||
hyper user_tkt_lifetime;
|
||||
hyper user_tkt_renewaltime;
|
||||
hyper clock_skew;
|
||||
hyper unknown6;
|
||||
} lsa_DomainInfoKerberos;
|
||||
|
||||
typedef struct {
|
||||
uint32 blob_size;
|
||||
[size_is(blob_size)] uint8 *efs_blob;
|
||||
} lsa_DomainInfoEfs;
|
||||
|
||||
typedef enum {
|
||||
LSA_DOMAIN_INFO_POLICY_EFS=2,
|
||||
LSA_DOMAIN_INFO_POLICY_KERBEROS=3
|
||||
} lsa_DomainInfoEnum;
|
||||
|
||||
typedef [switch_type(uint16)] union {
|
||||
[case(LSA_DOMAIN_INFO_POLICY_EFS)] lsa_DomainInfoEfs efs_info;
|
||||
[case(LSA_DOMAIN_INFO_POLICY_KERBEROS)] lsa_DomainInfoKerberos kerberos_info;
|
||||
} lsa_DomainInformationPolicy;
|
||||
|
||||
NTSTATUS lsa_QueryDomainInformationPolicy(
|
||||
[in] policy_handle *handle,
|
||||
[in] uint16 level,
|
||||
[out,unique,switch_is(level)] lsa_DomainInformationPolicy *info
|
||||
);
|
||||
|
||||
/* Function 0x36 */
|
||||
NTSTATUS lsa_SetDomainInformationPolicy(
|
||||
[in] policy_handle *handle,
|
||||
[in] uint16 level,
|
||||
[in,unique,switch_is(level)] lsa_DomainInformationPolicy *info
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function 0x37 */
|
||||
NTSTATUS lsa_OpenTrustedDomainByName(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_String name,
|
||||
[in] uint32 access_mask,
|
||||
[out] policy_handle *trustdom_handle
|
||||
);
|
||||
|
||||
/* Function 0x38 */
|
||||
NTSTATUS lsa_TestCall();
|
||||
|
||||
/**********************/
|
||||
/* Function 0x39 */
|
||||
|
||||
typedef struct {
|
||||
lsa_SidType sid_type;
|
||||
lsa_String name;
|
||||
uint32 sid_index;
|
||||
uint32 unknown;
|
||||
} lsa_TranslatedName2;
|
||||
|
||||
typedef struct {
|
||||
[range(0,1000)] uint32 count;
|
||||
[size_is(count)] lsa_TranslatedName2 *names;
|
||||
} lsa_TransNameArray2;
|
||||
|
||||
NTSTATUS lsa_LookupSids2(
|
||||
[in] policy_handle *handle,
|
||||
[in] lsa_SidArray *sids,
|
||||
[out,unique] lsa_RefDomainList *domains,
|
||||
[in,out] lsa_TransNameArray2 *names,
|
||||
[in] uint16 level,
|
||||
[in,out] uint32 *count,
|
||||
[in] uint32 unknown1,
|
||||
[in] uint32 unknown2
|
||||
);
|
||||
|
||||
/**********************/
|
||||
/* Function 0x3a */
|
||||
|
||||
typedef struct {
|
||||
lsa_SidType sid_type;
|
||||
uint32 rid;
|
||||
uint32 sid_index;
|
||||
uint32 unknown;
|
||||
} lsa_TranslatedSid2;
|
||||
|
||||
typedef struct {
|
||||
[range(0,1000)] uint32 count;
|
||||
[size_is(count)] lsa_TranslatedSid2 *sids;
|
||||
} lsa_TransSidArray2;
|
||||
|
||||
NTSTATUS lsa_LookupNames2 (
|
||||
[in] policy_handle *handle,
|
||||
[in,range(0,1000)] uint32 num_names,
|
||||
[in,size_is(num_names)] lsa_String names[],
|
||||
[out,unique] lsa_RefDomainList *domains,
|
||||
[in,out] lsa_TransSidArray2 *sids,
|
||||
[in] uint16 level,
|
||||
[in,out] uint32 *count,
|
||||
[in] uint32 unknown1,
|
||||
[in] uint32 unknown2
|
||||
);
|
||||
|
||||
/* Function 0x3b */
|
||||
NTSTATUS lsa_CreateTrustedDomainEx2();
|
||||
|
||||
/* Function 0x3c */
|
||||
NTSTATUS lsa_CREDRWRITE();
|
||||
|
||||
/* Function 0x3d */
|
||||
NTSTATUS lsa_CREDRREAD();
|
||||
|
||||
/* Function 0x3e */
|
||||
NTSTATUS lsa_CREDRENUMERATE();
|
||||
|
||||
/* Function 0x3f */
|
||||
NTSTATUS lsa_CREDRWRITEDOMAINCREDENTIALS();
|
||||
|
||||
/* Function 0x40 */
|
||||
NTSTATUS lsa_CREDRREADDOMAINCREDENTIALS();
|
||||
|
||||
/* Function 0x41 */
|
||||
NTSTATUS lsa_CREDRDELETE();
|
||||
|
||||
/* Function 0x42 */
|
||||
NTSTATUS lsa_CREDRGETTARGETINFO();
|
||||
|
||||
/* Function 0x43 */
|
||||
NTSTATUS lsa_CREDRPROFILELOADED();
|
||||
|
||||
/**********************/
|
||||
/* Function 0x44 */
|
||||
typedef struct {
|
||||
lsa_SidType sid_type;
|
||||
dom_sid2 *sid;
|
||||
uint32 sid_index;
|
||||
uint32 unknown;
|
||||
} lsa_TranslatedSid3;
|
||||
|
||||
typedef struct {
|
||||
[range(0,1000)] uint32 count;
|
||||
[size_is(count)] lsa_TranslatedSid3 *sids;
|
||||
} lsa_TransSidArray3;
|
||||
|
||||
NTSTATUS lsa_LookupNames3 (
|
||||
[in] policy_handle *handle,
|
||||
[in,range(0,1000)] uint32 num_names,
|
||||
[in,size_is(num_names)] lsa_String names[],
|
||||
[out,unique] lsa_RefDomainList *domains,
|
||||
[in,out] lsa_TransSidArray3 *sids,
|
||||
[in] uint16 level,
|
||||
[in,out] uint32 *count,
|
||||
[in] uint32 unknown1,
|
||||
[in] uint32 unknown2
|
||||
);
|
||||
|
||||
/* Function 0x45 */
|
||||
NTSTATUS lsa_CREDRGETSESSIONTYPES();
|
||||
|
||||
/* Function 0x46 */
|
||||
NTSTATUS lsa_LSARREGISTERAUDITEVENT();
|
||||
|
||||
/* Function 0x47 */
|
||||
NTSTATUS lsa_LSARGENAUDITEVENT();
|
||||
|
||||
/* Function 0x48 */
|
||||
NTSTATUS lsa_LSARUNREGISTERAUDITEVENT();
|
||||
|
||||
/* Function 0x49 */
|
||||
NTSTATUS lsa_LSARQUERYFORESTTRUSTINFORMATION();
|
||||
|
||||
/* Function 0x4a */
|
||||
NTSTATUS lsa_LSARSETFORESTTRUSTINFORMATION();
|
||||
|
||||
/* Function 0x4b */
|
||||
NTSTATUS lsa_CREDRRENAME();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x4c */
|
||||
|
||||
NTSTATUS lsa_LookupSids3(
|
||||
[in] lsa_SidArray *sids,
|
||||
[out,unique] lsa_RefDomainList *domains,
|
||||
[in,out] lsa_TransNameArray2 *names,
|
||||
[in] uint16 level,
|
||||
[in,out] uint32 *count,
|
||||
[in] uint32 unknown1,
|
||||
[in] uint32 unknown2
|
||||
);
|
||||
|
||||
/* Function 0x4d */
|
||||
NTSTATUS lsa_LookupNames4(
|
||||
[in,range(0,1000)] uint32 num_names,
|
||||
[in,size_is(num_names)] lsa_String names[],
|
||||
[out,unique] lsa_RefDomainList *domains,
|
||||
[in,out] lsa_TransSidArray3 *sids,
|
||||
[in] uint16 level,
|
||||
[in,out] uint32 *count,
|
||||
[in] uint32 unknown1,
|
||||
[in] uint32 unknown2
|
||||
);
|
||||
|
||||
/* Function 0x4e */
|
||||
NTSTATUS lsa_LSAROPENPOLICYSCE();
|
||||
|
||||
/* Function 0x4f */
|
||||
NTSTATUS lsa_LSARADTREGISTERSECURITYEVENTSOURCE();
|
||||
|
||||
/* Function 0x50 */
|
||||
NTSTATUS lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE();
|
||||
|
||||
/* Function 0x51 */
|
||||
NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
dcerpc remote management interface
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("afa8bd80-7d8a-11c9-bef4-08002b102989"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
endpoint("ncalrpc:[EPMAPPER]", "ncacn_ip_tcp:[135]", "ncacn_np:[\\pipe\\epmapper]"),
|
||||
helpstring("DCE/RPC Remote Management")
|
||||
]
|
||||
interface mgmt
|
||||
{
|
||||
typedef struct {
|
||||
dcerpc_syntax_id *id;
|
||||
} dcerpc_syntax_id_p;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] dcerpc_syntax_id_p if_id[*];
|
||||
} rpc_if_id_vector_t;
|
||||
|
||||
|
||||
/***********************/
|
||||
/* Function 0x00 */
|
||||
WERROR mgmt_inq_if_ids (
|
||||
[out,unique] rpc_if_id_vector_t *if_id_vector
|
||||
);
|
||||
|
||||
|
||||
|
||||
/***********************/
|
||||
/* Function 0x01 */
|
||||
|
||||
|
||||
/* these are the array indexes in the statistics array */
|
||||
const int MGMT_STATS_CALLS_IN = 0;
|
||||
const int MGMT_STATS_CALLS_OUT = 1;
|
||||
const int MGMT_STATS_PKTS_IN = 2;
|
||||
const int MGMT_STATS_PKTS_OUT = 3;
|
||||
const int MGMT_STATS_ARRAY_MAX_SIZE = 4;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] uint32 statistics[*];
|
||||
} mgmt_statistics;
|
||||
|
||||
WERROR mgmt_inq_stats (
|
||||
[in] uint32 max_count,
|
||||
[in] uint32 unknown,
|
||||
[out] mgmt_statistics statistics
|
||||
);
|
||||
|
||||
|
||||
/***********************/
|
||||
/* Function 0x02 */
|
||||
boolean32 mgmt_is_server_listening (
|
||||
[out] error_status_t status
|
||||
);
|
||||
|
||||
|
||||
/***********************/
|
||||
/* Function 0x03 */
|
||||
WERROR mgmt_stop_server_listening ();
|
||||
|
||||
|
||||
/***********************/
|
||||
/* Function 0x04 */
|
||||
WERROR mgmt_inq_princ_name (
|
||||
[in] uint32 authn_proto,
|
||||
[in] uint32 princ_name_size,
|
||||
[out] [string,charset(DOS)] uint8 princ_name[]
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
miscellaneous IDL structures
|
||||
*/
|
||||
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface misc
|
||||
{
|
||||
typedef [public,noprint,gensize,noejs] struct {
|
||||
uint32 time_low;
|
||||
uint16 time_mid;
|
||||
uint16 time_hi_and_version;
|
||||
uint8 clock_seq[2];
|
||||
uint8 node[6];
|
||||
} GUID;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 handle_type;
|
||||
GUID uuid;
|
||||
} policy_handle;
|
||||
|
||||
/* secure channel types */
|
||||
/* Only SEC_CHAN_WKSTA can forward requests to other domains. */
|
||||
|
||||
typedef [public] enum {
|
||||
SEC_CHAN_WKSTA = 2,
|
||||
SEC_CHAN_DOMAIN = 4,
|
||||
SEC_CHAN_BDC = 6
|
||||
} netr_SchannelType;
|
||||
|
||||
/* SAM database types */
|
||||
typedef [public,v1_enum] enum {
|
||||
SAM_DATABASE_DOMAIN = 0, /* Domain users and groups */
|
||||
SAM_DATABASE_BUILTIN = 1, /* BUILTIN users and groups */
|
||||
SAM_DATABASE_PRIVS = 2 /* Privileges */
|
||||
} netr_SamDatabaseID;
|
||||
|
||||
typedef [public,v1_enum] enum {
|
||||
SAMR_REJECT_OTHER = 0,
|
||||
SAMR_REJECT_TOO_SHORT = 1,
|
||||
SAMR_REJECT_IN_HISTORY = 2,
|
||||
SAMR_REJECT_COMPLEXITY = 5
|
||||
} samr_RejectReason;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/* Works over UDP */
|
||||
|
||||
[
|
||||
uuid("17fdd703-1827-4e34-79d4-24a55c53bb37"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Messaging Service")
|
||||
] interface msgsvc
|
||||
{
|
||||
void NetrMessageNameAdd();
|
||||
void NetrMessageNameEnum();
|
||||
void NetrMessageNameGetInfo();
|
||||
void NetrMessageNameDel();
|
||||
}
|
||||
|
||||
[
|
||||
uuid("5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc"),
|
||||
version(1.0)
|
||||
] interface msgsvcsend
|
||||
{
|
||||
void NetrSendMessage();
|
||||
}
|
||||
@@ -0,0 +1,701 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
IDL structures for NBT operations
|
||||
|
||||
NBT is not traditionally encoded using IDL/NDR. This is a bit of an
|
||||
experiment, and I may well switch us back to a more traditional
|
||||
encoding if it doesn't work out
|
||||
*/
|
||||
|
||||
import "security.idl", "svcctl.idl";
|
||||
[
|
||||
helper("libcli/nbt/nbtname.h")
|
||||
]
|
||||
interface nbt
|
||||
{
|
||||
const int NBT_NAME_SERVICE_PORT = 137;
|
||||
const int NBT_DGRAM_SERVICE_PORT = 138;
|
||||
|
||||
typedef [bitmap16bit] bitmap {
|
||||
NBT_RCODE = 0x000F,
|
||||
NBT_FLAG_BROADCAST = 0x0010,
|
||||
NBT_FLAG_RECURSION_AVAIL = 0x0080,
|
||||
NBT_FLAG_RECURSION_DESIRED = 0x0100,
|
||||
NBT_FLAG_TRUNCATION = 0x0200,
|
||||
NBT_FLAG_AUTHORITIVE = 0x0400,
|
||||
NBT_OPCODE = 0x7800,
|
||||
NBT_FLAG_REPLY = 0x8000
|
||||
} nbt_operation;
|
||||
|
||||
/* the opcodes are in the operation field, masked with
|
||||
NBT_OPCODE */
|
||||
typedef enum {
|
||||
NBT_OPCODE_QUERY = (0x0<<11),
|
||||
NBT_OPCODE_REGISTER = (0x5<<11),
|
||||
NBT_OPCODE_RELEASE = (0x6<<11),
|
||||
NBT_OPCODE_WACK = (0x7<<11),
|
||||
NBT_OPCODE_REFRESH = (0x8<<11),
|
||||
NBT_OPCODE_REFRESH2 = (0x9<<11),
|
||||
NBT_OPCODE_MULTI_HOME_REG = (0xf<<11)
|
||||
} nbt_opcode;
|
||||
|
||||
/* rcode values */
|
||||
typedef enum {
|
||||
NBT_RCODE_OK = 0x0,
|
||||
NBT_RCODE_FMT = 0x1,
|
||||
NBT_RCODE_SVR = 0x2,
|
||||
NBT_RCODE_NAM = 0x3,
|
||||
NBT_RCODE_IMP = 0x4,
|
||||
NBT_RCODE_RFS = 0x5,
|
||||
NBT_RCODE_ACT = 0x6,
|
||||
NBT_RCODE_CFT = 0x7
|
||||
} nbt_rcode;
|
||||
|
||||
/* we support any 8bit name type, but by defining the common
|
||||
ones here we get better debug displays */
|
||||
typedef [enum8bit] enum {
|
||||
NBT_NAME_CLIENT = 0x00,
|
||||
NBT_NAME_MS = 0x01,
|
||||
NBT_NAME_USER = 0x03,
|
||||
NBT_NAME_SERVER = 0x20,
|
||||
NBT_NAME_PDC = 0x1B,
|
||||
NBT_NAME_LOGON = 0x1C,
|
||||
NBT_NAME_MASTER = 0x1D,
|
||||
NBT_NAME_BROWSER = 0x1E
|
||||
} nbt_name_type;
|
||||
|
||||
/* the ndr parser for nbt_name is separately defined in
|
||||
nbtname.c (along with the parsers for nbt_string) */
|
||||
typedef [public,nopull,nopush] struct {
|
||||
string name;
|
||||
string scope;
|
||||
nbt_name_type type;
|
||||
} nbt_name;
|
||||
|
||||
typedef [enum16bit] enum {
|
||||
NBT_QCLASS_IP = 0x01
|
||||
} nbt_qclass;
|
||||
|
||||
typedef [enum16bit] enum {
|
||||
NBT_QTYPE_ADDRESS = 0x0001,
|
||||
NBT_QTYPE_NAMESERVICE = 0x0002,
|
||||
NBT_QTYPE_NULL = 0x000A,
|
||||
NBT_QTYPE_NETBIOS = 0x0020,
|
||||
NBT_QTYPE_STATUS = 0x0021
|
||||
} nbt_qtype;
|
||||
|
||||
typedef struct {
|
||||
nbt_name name;
|
||||
nbt_qtype question_type;
|
||||
nbt_qclass question_class;
|
||||
} nbt_name_question;
|
||||
|
||||
/* these are the possible values of the NBT_NM_OWNER_TYPE
|
||||
field */
|
||||
typedef enum {
|
||||
NBT_NODE_B = 0x0000,
|
||||
NBT_NODE_P = 0x2000,
|
||||
NBT_NODE_M = 0x4000,
|
||||
NBT_NODE_H = 0x6000
|
||||
} nbt_node_type;
|
||||
|
||||
typedef [bitmap16bit] bitmap {
|
||||
NBT_NM_PERMANENT = 0x0200,
|
||||
NBT_NM_ACTIVE = 0x0400,
|
||||
NBT_NM_CONFLICT = 0x0800,
|
||||
NBT_NM_DEREGISTER = 0x1000,
|
||||
NBT_NM_OWNER_TYPE = 0x6000,
|
||||
NBT_NM_GROUP = 0x8000
|
||||
} nb_flags;
|
||||
|
||||
typedef struct {
|
||||
nb_flags nb_flags;
|
||||
ipv4address ipaddr;
|
||||
} nbt_rdata_address;
|
||||
|
||||
typedef struct {
|
||||
uint16 length;
|
||||
nbt_rdata_address addresses[length/6];
|
||||
} nbt_rdata_netbios;
|
||||
|
||||
typedef struct {
|
||||
uint8 unit_id[6];
|
||||
uint8 jumpers;
|
||||
uint8 test_result;
|
||||
uint16 version_number;
|
||||
uint16 period_of_statistics;
|
||||
uint16 number_of_crcs;
|
||||
uint16 number_alignment_errors;
|
||||
uint16 number_of_collisions;
|
||||
uint16 number_send_aborts;
|
||||
uint32 number_good_sends;
|
||||
uint32 number_good_receives;
|
||||
uint16 number_retransmits;
|
||||
uint16 number_no_resource_conditions;
|
||||
uint16 number_free_command_blocks;
|
||||
uint16 total_number_command_blocks;
|
||||
uint16 max_total_number_command_blocks;
|
||||
uint16 number_pending_sessions;
|
||||
uint16 max_number_pending_sessions;
|
||||
uint16 max_total_sessions_possible;
|
||||
uint16 session_data_packet_size;
|
||||
} nbt_statistics;
|
||||
|
||||
typedef struct {
|
||||
astring15 name;
|
||||
nbt_name_type type;
|
||||
nb_flags nb_flags;
|
||||
} nbt_status_name;
|
||||
|
||||
typedef struct {
|
||||
[value(num_names * 18 + 47)] uint16 length;
|
||||
uint8 num_names;
|
||||
nbt_status_name names[num_names];
|
||||
nbt_statistics statistics;
|
||||
} nbt_rdata_status;
|
||||
|
||||
typedef struct {
|
||||
uint16 length;
|
||||
uint8 data[length];
|
||||
} nbt_rdata_data;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(NBT_QTYPE_NETBIOS)] nbt_rdata_netbios netbios;
|
||||
[case(NBT_QTYPE_STATUS)] nbt_rdata_status status;
|
||||
[default] nbt_rdata_data data;
|
||||
} nbt_rdata;
|
||||
|
||||
/*
|
||||
* this macro works arround the problem
|
||||
* that we need to use nbt_rdata_data
|
||||
* together with NBT_QTYPE_NETBIOS
|
||||
* for WACK replies
|
||||
*/
|
||||
#define NBT_RES_REC_LEVEL(rr_type, rdata) (\
|
||||
(((rr_type) == NBT_QTYPE_NETBIOS) && \
|
||||
talloc_check_name(ndr, "struct ndr_push") && \
|
||||
((rdata).data.length == 2)) \
|
||||
? 0 : rr_type)
|
||||
|
||||
typedef [flag(LIBNDR_PRINT_ARRAY_HEX)] struct {
|
||||
nbt_name name;
|
||||
nbt_qtype rr_type;
|
||||
nbt_qclass rr_class;
|
||||
uint32 ttl;
|
||||
[switch_is(NBT_RES_REC_LEVEL(rr_type, rdata))] nbt_rdata rdata;
|
||||
} nbt_res_rec;
|
||||
|
||||
typedef [flag(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX),public] struct {
|
||||
uint16 name_trn_id;
|
||||
nbt_operation operation;
|
||||
uint16 qdcount;
|
||||
uint16 ancount;
|
||||
uint16 nscount;
|
||||
uint16 arcount;
|
||||
nbt_name_question questions[qdcount];
|
||||
nbt_res_rec answers[ancount];
|
||||
nbt_res_rec nsrecs[nscount];
|
||||
nbt_res_rec additional[arcount];
|
||||
[flag(NDR_REMAINING)] DATA_BLOB padding;
|
||||
} nbt_name_packet;
|
||||
|
||||
|
||||
/*
|
||||
NBT DGRAM packets (UDP/138)
|
||||
*/
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
DGRAM_DIRECT_UNIQUE = 0x10,
|
||||
DGRAM_DIRECT_GROUP = 0x11,
|
||||
DGRAM_BCAST = 0x12,
|
||||
DGRAM_ERROR = 0x13,
|
||||
DGRAM_QUERY = 0x14,
|
||||
DGRAM_QUERY_POSITIVE = 0x15,
|
||||
DGRAM_QUERY_NEGATIVE = 0x16
|
||||
} dgram_msg_type;
|
||||
|
||||
typedef [bitmap8bit] bitmap {
|
||||
DGRAM_FLAG_MORE = 0x01,
|
||||
DGRAM_FLAG_FIRST = 0x02,
|
||||
DGRAM_FLAG_NODE_TYPE = 0x0C
|
||||
} dgram_flags;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
DGRAM_NODE_B = 0x00,
|
||||
DGRAM_NODE_P = 0x04,
|
||||
DGRAM_NODE_M = 0x08,
|
||||
DGRAM_NODE_NBDD = 0x0C
|
||||
} dgram_node_type;
|
||||
|
||||
/* a dgram_message is the main dgram body in general use */
|
||||
|
||||
/* the most common datagram type is a SMB_TRANSACTION
|
||||
operation, where a SMB packet is used in the data section
|
||||
of a dgram_message to hold a trans request, which in turn
|
||||
holds a small command structure. It's a very strange beast
|
||||
indeed. To make the code cleaner we define a basic SMB
|
||||
packet in IDL here. This is not a general purpose SMB
|
||||
packet, and won't be used in the core SMB client/server
|
||||
code, but it does make working with these types of dgrams
|
||||
easier */
|
||||
|
||||
const string NBT_MAILSLOT_NETLOGON = "\\MAILSLOT\\NET\\NETLOGON";
|
||||
const string NBT_MAILSLOT_NTLOGON = "\\MAILSLOT\\NET\\NTLOGON";
|
||||
const string NBT_MAILSLOT_GETDC = "\\MAILSLOT\\NET\\GETDC";
|
||||
const string NBT_MAILSLOT_BROWSE = "\\MAILSLOT\\BROWSE";
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
SMB_TRANSACTION = 0x25
|
||||
} smb_command;
|
||||
|
||||
typedef struct {
|
||||
[range(17,17),value(17)] uint8 wct;
|
||||
uint16 total_param_count;
|
||||
uint16 total_data_count;
|
||||
uint16 max_param_count;
|
||||
uint16 max_data_count;
|
||||
uint8 max_setup_count;
|
||||
uint8 pad;
|
||||
uint16 trans_flags;
|
||||
uint32 timeout;
|
||||
uint16 reserved;
|
||||
uint16 param_count;
|
||||
uint16 param_offset;
|
||||
uint16 data_count;
|
||||
uint16 data_offset;
|
||||
[range(3,3),value(3)] uint8 setup_count;
|
||||
uint8 pad2;
|
||||
uint16 opcode;
|
||||
uint16 priority;
|
||||
uint16 class;
|
||||
[value(strlen(mailslot_name)+1+r->data.length)]
|
||||
uint16 byte_count;
|
||||
astring mailslot_name;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB data;
|
||||
} smb_trans_body;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(SMB_TRANSACTION)] smb_trans_body trans;
|
||||
} smb_body;
|
||||
|
||||
|
||||
typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN|NDR_PAHEX),public] struct {
|
||||
smb_command smb_command;
|
||||
uint8 err_class;
|
||||
uint8 pad;
|
||||
uint16 err_code;
|
||||
uint8 flags;
|
||||
uint16 flags2;
|
||||
uint16 pid_high;
|
||||
uint8 signature[8];
|
||||
uint16 reserved;
|
||||
uint16 tid;
|
||||
uint16 pid;
|
||||
uint16 vuid;
|
||||
uint16 mid;
|
||||
[switch_is(smb_command)] smb_body body;
|
||||
} dgram_smb_packet;
|
||||
|
||||
const uint32 DGRAM_SMB = 0xff534d42; /* 0xffSMB */
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(DGRAM_SMB)] dgram_smb_packet smb;
|
||||
} dgram_message_body;
|
||||
|
||||
typedef struct {
|
||||
uint16 length;
|
||||
uint16 offset;
|
||||
nbt_name source_name;
|
||||
nbt_name dest_name;
|
||||
uint32 dgram_body_type;
|
||||
[switch_is(dgram_body_type)] dgram_message_body body;
|
||||
} dgram_message;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
DGRAM_ERROR_NAME_NOT_PRESENT = 0x82,
|
||||
DGRAM_ERROR_INVALID_SOURCE = 0x83,
|
||||
DGRAM_ERROR_INVALID_DEST = 0x84
|
||||
} dgram_err_code;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(DGRAM_DIRECT_UNIQUE)] dgram_message msg;
|
||||
[case(DGRAM_DIRECT_GROUP)] dgram_message msg;
|
||||
[case(DGRAM_BCAST)] dgram_message msg;
|
||||
[case(DGRAM_ERROR)] dgram_err_code error;
|
||||
[case(DGRAM_QUERY)] nbt_name dest_name;
|
||||
[case(DGRAM_QUERY_POSITIVE)] nbt_name dest_name;
|
||||
[case(DGRAM_QUERY_NEGATIVE)] nbt_name dest_name;
|
||||
} dgram_data;
|
||||
|
||||
typedef [flag(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX),public] struct {
|
||||
dgram_msg_type msg_type;
|
||||
dgram_flags flags;
|
||||
uint16 dgram_id;
|
||||
ipv4address src_addr;
|
||||
uint16 src_port;
|
||||
[switch_is(msg_type)] dgram_data data;
|
||||
} nbt_dgram_packet;
|
||||
|
||||
|
||||
/*******************************************/
|
||||
/* \MAILSLOT\NET\NETLOGON mailslot requests */
|
||||
typedef enum {
|
||||
NETLOGON_QUERY_FOR_PDC = 0x7,
|
||||
NETLOGON_ANNOUNCE_UAS = 0xa,
|
||||
NETLOGON_RESPONSE_FROM_PDC = 0xc,
|
||||
NETLOGON_QUERY_FOR_PDC2 = 0x12,
|
||||
NETLOGON_RESPONSE_FROM_PDC2 = 0x17,
|
||||
NETLOGON_RESPONSE_FROM_PDC_USER = 0x19
|
||||
} nbt_netlogon_command;
|
||||
|
||||
/* query for pdc request */
|
||||
typedef struct {
|
||||
astring computer_name;
|
||||
astring mailslot_name;
|
||||
[flag(NDR_ALIGN2)] DATA_BLOB _pad;
|
||||
nstring unicode_name;
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_netlogon_query_for_pdc;
|
||||
|
||||
/* query for pdc request - new style */
|
||||
typedef struct {
|
||||
uint16 request_count;
|
||||
nstring computer_name;
|
||||
nstring user_name;
|
||||
astring mailslot_name;
|
||||
uint32 unknown[2];
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_netlogon_query_for_pdc2;
|
||||
|
||||
/* response from pdc */
|
||||
typedef struct {
|
||||
astring pdc_name;
|
||||
[flag(NDR_ALIGN2)] DATA_BLOB _pad;
|
||||
nstring unicode_pdc_name;
|
||||
nstring domain_name;
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_netlogon_response_from_pdc;
|
||||
|
||||
typedef [bitmap32bit] bitmap {
|
||||
NBT_SERVER_PDC = 0x00000001,
|
||||
NBT_SERVER_GC = 0x00000004,
|
||||
NBT_SERVER_LDAP = 0x00000008,
|
||||
NBT_SERVER_DS = 0x00000010,
|
||||
NBT_SERVER_KDC = 0x00000020,
|
||||
NBT_SERVER_TIMESERV = 0x00000040,
|
||||
NBT_SERVER_CLOSEST = 0x00000080,
|
||||
NBT_SERVER_WRITABLE = 0x00000100,
|
||||
NBT_SERVER_GOOD_TIMESERV = 0x00000200
|
||||
} nbt_server_type;
|
||||
|
||||
/* response from pdc - type2 */
|
||||
typedef struct {
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad;
|
||||
nbt_server_type server_type;
|
||||
GUID domain_uuid;
|
||||
nbt_string forest;
|
||||
nbt_string dns_domain;
|
||||
nbt_string pdc_dns_name;
|
||||
nbt_string domain;
|
||||
nbt_string pdc_name;
|
||||
nbt_string user_name;
|
||||
nbt_string server_site;
|
||||
nbt_string client_site;
|
||||
uint8 unknown;
|
||||
uint32 unknown2;
|
||||
[flag(NDR_BIG_ENDIAN)]
|
||||
ipv4address pdc_ip;
|
||||
uint32 unknown3[2];
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_netlogon_response_from_pdc2;
|
||||
|
||||
declare enum netr_SamDatabaseID;
|
||||
|
||||
/* announce change to UAS or SAM */
|
||||
typedef struct {
|
||||
netr_SamDatabaseID db_index;
|
||||
hyper serial;
|
||||
NTTIME timestamp;
|
||||
} nbt_db_change;
|
||||
|
||||
/* used to announce SAM changes */
|
||||
typedef struct {
|
||||
uint32 serial_lo;
|
||||
time_t timestamp;
|
||||
uint32 pulse;
|
||||
uint32 random;
|
||||
astring pdc_name;
|
||||
astring domain;
|
||||
[flag(NDR_ALIGN2)] DATA_BLOB _pad;
|
||||
nstring unicode_pdc_name;
|
||||
nstring unicode_domain;
|
||||
uint32 db_count;
|
||||
nbt_db_change dbchange[db_count];
|
||||
[value(ndr_size_dom_sid(&sid, ndr->flags))] uint32 sid_size;
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad2;
|
||||
dom_sid sid;
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_netlogon_announce_uas;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(NETLOGON_QUERY_FOR_PDC)] nbt_netlogon_query_for_pdc pdc;
|
||||
[case(NETLOGON_QUERY_FOR_PDC2)] nbt_netlogon_query_for_pdc2 pdc2;
|
||||
[case(NETLOGON_ANNOUNCE_UAS)] nbt_netlogon_announce_uas uas;
|
||||
[case(NETLOGON_RESPONSE_FROM_PDC)] nbt_netlogon_response_from_pdc response;
|
||||
[case(NETLOGON_RESPONSE_FROM_PDC2)] nbt_netlogon_response_from_pdc2 response2;
|
||||
[case(NETLOGON_RESPONSE_FROM_PDC_USER)] nbt_netlogon_response_from_pdc2 response2;
|
||||
} nbt_netlogon_request;
|
||||
|
||||
typedef [flag(NDR_NOALIGN),public] struct {
|
||||
nbt_netlogon_command command;
|
||||
[switch_is(command)] nbt_netlogon_request req;
|
||||
} nbt_netlogon_packet;
|
||||
|
||||
/*******************************************/
|
||||
/* CLDAP netlogon response */
|
||||
|
||||
/* note that these structures are very similar to, but not
|
||||
quite identical to, the netlogon structures above */
|
||||
|
||||
typedef struct {
|
||||
uint16 type;
|
||||
nstring pdc_name;
|
||||
nstring user_name;
|
||||
nstring domain_name;
|
||||
[value(1)] uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_cldap_netlogon_1;
|
||||
|
||||
typedef struct {
|
||||
uint16 type;
|
||||
nstring pdc_name;
|
||||
nstring user_name;
|
||||
nstring domain_name;
|
||||
GUID domain_uuid;
|
||||
GUID unknown_uuid;
|
||||
nbt_string forest;
|
||||
nbt_string dns_domain;
|
||||
nbt_string pdc_dns_name;
|
||||
ipv4address pdc_ip;
|
||||
nbt_server_type server_type;
|
||||
[value(3)] uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_cldap_netlogon_3;
|
||||
|
||||
typedef struct {
|
||||
uint32 type;
|
||||
nbt_server_type server_type;
|
||||
GUID domain_uuid;
|
||||
nbt_string forest;
|
||||
nbt_string dns_domain;
|
||||
nbt_string pdc_dns_name;
|
||||
nbt_string domain;
|
||||
nbt_string pdc_name;
|
||||
nbt_string user_name;
|
||||
nbt_string server_site;
|
||||
nbt_string client_site;
|
||||
[value(5)] uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_cldap_netlogon_5;
|
||||
|
||||
typedef struct {
|
||||
uint32 type;
|
||||
nbt_server_type server_type;
|
||||
GUID domain_uuid;
|
||||
nbt_string forest;
|
||||
nbt_string dns_domain;
|
||||
nbt_string pdc_dns_name;
|
||||
nbt_string domain;
|
||||
nbt_string pdc_name;
|
||||
nbt_string user_name;
|
||||
nbt_string server_site;
|
||||
nbt_string client_site;
|
||||
uint8 unknown;
|
||||
uint32 unknown2;
|
||||
[flag(NDR_BIG_ENDIAN)]
|
||||
ipv4address pdc_ip;
|
||||
uint32 unknown3[2];
|
||||
[value(13)] uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_cldap_netlogon_13;
|
||||
|
||||
typedef [flag(NDR_NOALIGN),public,nodiscriminant] union {
|
||||
[case(0)] nbt_cldap_netlogon_1 logon1;
|
||||
[case(1)] nbt_cldap_netlogon_1 logon1;
|
||||
[case(2)] nbt_cldap_netlogon_3 logon3;
|
||||
[case(3)] nbt_cldap_netlogon_3 logon3;
|
||||
[case(4)] nbt_cldap_netlogon_5 logon5;
|
||||
[case(5)] nbt_cldap_netlogon_5 logon5;
|
||||
[case(6)] nbt_cldap_netlogon_5 logon5;
|
||||
[case(7)] nbt_cldap_netlogon_5 logon5;
|
||||
[default] nbt_cldap_netlogon_13 logon13;
|
||||
} nbt_cldap_netlogon;
|
||||
|
||||
/*******************************************/
|
||||
/* \MAILSLOT\NET\NTLOGON mailslot requests */
|
||||
typedef enum {
|
||||
NTLOGON_SAM_LOGON = 0x12,
|
||||
NTLOGON_SAM_LOGON_REPLY = 0x13,
|
||||
NTLOGON_SAM_LOGON_REPLY15 = 0x15
|
||||
} nbt_ntlogon_command;
|
||||
|
||||
typedef struct {
|
||||
uint16 request_count;
|
||||
nstring computer_name;
|
||||
nstring user_name;
|
||||
astring mailslot_name;
|
||||
uint32 acct_control;
|
||||
[value(ndr_size_dom_sid(&sid, ndr->flags))] uint32 sid_size;
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad;
|
||||
dom_sid sid;
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_ntlogon_sam_logon;
|
||||
|
||||
typedef struct {
|
||||
nstring server;
|
||||
nstring user_name;
|
||||
nstring domain;
|
||||
uint32 nt_version;
|
||||
uint16 lmnt_token;
|
||||
uint16 lm20_token;
|
||||
} nbt_ntlogon_sam_logon_reply;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(NTLOGON_SAM_LOGON)] nbt_ntlogon_sam_logon logon;
|
||||
[case(NTLOGON_SAM_LOGON_REPLY)] nbt_ntlogon_sam_logon_reply reply;
|
||||
[case(NTLOGON_SAM_LOGON_REPLY15)] nbt_ntlogon_sam_logon_reply reply;
|
||||
} nbt_ntlogon_request;
|
||||
|
||||
typedef [flag(NDR_NOALIGN),public] struct {
|
||||
nbt_ntlogon_command command;
|
||||
[switch_is(command)] nbt_ntlogon_request req;
|
||||
} nbt_ntlogon_packet;
|
||||
|
||||
/********************************************************/
|
||||
/* \MAILSLOT\BROWSE mailslot requests */
|
||||
/* for details see http://ubiqx.org/cifs/Browsing.html */
|
||||
/********************************************************/
|
||||
declare bitmap svcctl_ServerType;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
HostAnnouncement = 1,
|
||||
AnnouncementRequest = 2,
|
||||
Election = 8,
|
||||
GetBackupListReq = 9,
|
||||
GetBackupListResp = 10,
|
||||
BecomeBackup = 11,
|
||||
DomainAnnouncement = 12,
|
||||
MasterAnnouncement = 13,
|
||||
ResetBrowserState = 14,
|
||||
LocalMasterAnnouncement = 15
|
||||
} nbt_browse_opcode;
|
||||
|
||||
typedef struct {
|
||||
uint8 UpdateCount;
|
||||
uint32 Periodicity;
|
||||
[charset(DOS)] uint8 ServerName[16];
|
||||
uint8 OSMajor;
|
||||
uint8 OSMinor;
|
||||
svcctl_ServerType ServerType;
|
||||
uint8 BroMajorVer;
|
||||
uint8 BroMinorVer;
|
||||
uint16 Signature;
|
||||
astring Comment;
|
||||
} nbt_browse_host_announcement;
|
||||
|
||||
typedef struct {
|
||||
uint8 Unused;
|
||||
astring ResponseName;
|
||||
} nbt_browse_announcement_request;
|
||||
|
||||
typedef struct {
|
||||
uint8 Version;
|
||||
uint32 Criteria;
|
||||
uint32 UpTime; /* In milliseconds */
|
||||
uint32 Reserved; /* Must be zero */
|
||||
astring ServerName;
|
||||
} nbt_browse_election_request;
|
||||
|
||||
typedef struct {
|
||||
uint8 ReqCount;
|
||||
uint32 Token;
|
||||
} nbt_browse_backup_list_request;
|
||||
|
||||
typedef struct {
|
||||
uint8 BackupCount;
|
||||
uint32 Token;
|
||||
nbt_name BackupServerList[BackupCount];/* TODO: this is wrong */
|
||||
} nbt_browse_backup_list_response;
|
||||
|
||||
typedef struct {
|
||||
astring BrowserName;
|
||||
} nbt_browse_become_backup;
|
||||
|
||||
typedef struct {
|
||||
uint8 UpdateCount;
|
||||
uint32 Periodicity;
|
||||
[charset(DOS)] uint8 ServerName[16];
|
||||
uint8 OSMajor;
|
||||
uint8 OSMinor;
|
||||
svcctl_ServerType ServerType;
|
||||
uint32 MysteriousField;
|
||||
astring Comment;
|
||||
} nbt_browse_domain_announcement;
|
||||
|
||||
typedef struct {
|
||||
astring ServerName;
|
||||
} nbt_browse_master_announcement;
|
||||
|
||||
typedef struct {
|
||||
uint8 Command;
|
||||
} nbt_browse_reset_state;
|
||||
|
||||
typedef struct {
|
||||
uint8 UpdateCount;
|
||||
uint32 Periodicity;
|
||||
[charset(DOS)] uint8 ServerName[16];
|
||||
uint8 OSMajor;
|
||||
uint8 OSMinor;
|
||||
svcctl_ServerType ServerType;
|
||||
uint8 BroMajorVer;
|
||||
uint8 BroMinorVer;
|
||||
uint16 Signature;
|
||||
astring Comment;
|
||||
} nbt_browse_local_master_announcement;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(HostAnnouncement)] nbt_browse_host_announcement host_annoucement;
|
||||
[case(AnnouncementRequest)] nbt_browse_announcement_request announcement_request;
|
||||
[case(Election)] nbt_browse_election_request election_request;
|
||||
[case(GetBackupListReq)] nbt_browse_backup_list_request backup_list_request;
|
||||
[case(GetBackupListResp)] nbt_browse_backup_list_response backup_list_response;
|
||||
[case(BecomeBackup)] nbt_browse_become_backup become_backup;
|
||||
[case(DomainAnnouncement)] nbt_browse_domain_announcement domain_announcement;
|
||||
[case(MasterAnnouncement)] nbt_browse_master_announcement master_announcement;
|
||||
[case(ResetBrowserState)] nbt_browse_reset_state reset_browser_state;
|
||||
[case(LocalMasterAnnouncement)] nbt_browse_local_master_announcement local_master_announcement;
|
||||
} nbt_browse_payload;
|
||||
|
||||
typedef [public,flag(NDR_NOALIGN)] struct {
|
||||
nbt_browse_opcode opcode;
|
||||
[switch_is(opcode)] nbt_browse_payload payload;
|
||||
} nbt_browse_packet;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,42 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
NFS4 ACL format on disk
|
||||
see http://www.suse.de/~agruen/nfs4acl/
|
||||
*/
|
||||
|
||||
import "misc.idl", "security.idl";
|
||||
|
||||
[ uuid("18763978-8625-abc3-54ca-9892bacdf321"),
|
||||
version(1.0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface nfs4acl
|
||||
{
|
||||
const char *NFS4ACL_XATTR_NAME = "system.nfs4acl";
|
||||
|
||||
/* these structures use the same bit values and other constants as
|
||||
in security.idl */
|
||||
typedef [flag(NDR_BIG_ENDIAN)] struct {
|
||||
uint16 e_type;
|
||||
uint16 e_flags;
|
||||
uint32 e_mask;
|
||||
uint32 e_id;
|
||||
utf8string e_who;
|
||||
[flag(NDR_ALIGN4)] DATA_BLOB _pad;
|
||||
} nfs4ace;
|
||||
|
||||
typedef [public,flag(NDR_BIG_ENDIAN)] struct {
|
||||
uint8 a_version;
|
||||
uint8 a_flags;
|
||||
uint16 a_count;
|
||||
uint32 a_owner_mask;
|
||||
uint32 a_group_mask;
|
||||
uint32 a_other_mask;
|
||||
nfs4ace ace[a_count];
|
||||
} nfs4acl;
|
||||
|
||||
NTSTATUS nfs4acl_test(
|
||||
[in] nfs4acl acl
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
IDL structures for notify change code
|
||||
|
||||
this defines the structures used in the notify database code, and
|
||||
the change notify buffers
|
||||
*/
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface notify
|
||||
{
|
||||
|
||||
/* structure used in the notify database */
|
||||
typedef [public] struct {
|
||||
uint32 server;
|
||||
uint32 filter; /* filter to apply in this directory */
|
||||
uint32 subdir_filter; /* filter to apply in child directories */
|
||||
utf8string path;
|
||||
uint32 path_len; /* saves some computation on search */
|
||||
pointer private;
|
||||
} notify_entry;
|
||||
|
||||
/*
|
||||
to allow for efficient search for matching entries, we
|
||||
divide them by the directory depth, with a separate array
|
||||
per depth. The entries within each depth are sorted by path,
|
||||
allowing for a bisection search.
|
||||
|
||||
The max_mask and max_mask_subdir at each depth is the
|
||||
bitwise or of the filters and subdir filters for all entries
|
||||
at that depth. This allows a depth to be quickly skipped if
|
||||
no entries will match the target filter
|
||||
*/
|
||||
typedef struct {
|
||||
uint32 max_mask;
|
||||
uint32 max_mask_subdir;
|
||||
uint32 num_entries;
|
||||
notify_entry entries[num_entries];
|
||||
} notify_depth;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 num_depths;
|
||||
notify_depth depth[num_depths];
|
||||
} notify_array;
|
||||
|
||||
/* structure sent between servers in notify messages */
|
||||
typedef [public] struct {
|
||||
uint32 action;
|
||||
utf8string path;
|
||||
pointer private;
|
||||
} notify_event;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
plug and play services
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("8d9f4e40-a03d-11ce-8f69-08003e30051b"),
|
||||
version(1.0),
|
||||
helpstring("Plug and Play services")
|
||||
]
|
||||
interface ntsvcs
|
||||
{
|
||||
void PNP_Disconnect();
|
||||
void PNP_Connect();
|
||||
void PNP_GetVersion();
|
||||
void PNP_GetGlobalState();
|
||||
void PNP_InitDetection();
|
||||
void PNP_ReportLogOn();
|
||||
void PNP_ValidateDeviceInstance();
|
||||
void PNP_GetRootDeviceInstance();
|
||||
void PNP_GetRelatedDeviceInstance();
|
||||
void PNP_EnumerateSubKeys();
|
||||
void PNP_GetDeviceList();
|
||||
void PNP_GetDeviceListSize();
|
||||
void PNP_GetDepth();
|
||||
void PNP_GetDeviceRegProp();
|
||||
void PNP_SetDeviceRegProp();
|
||||
void PNP_GetClassInstance();
|
||||
void PNP_CreateKey();
|
||||
void PNP_DeleteRegistryKey();
|
||||
void PNP_GetClassCount();
|
||||
void PNP_GetClassName();
|
||||
void PNP_DeleteClassKey();
|
||||
void PNP_GetInterfaceDeviceAlias();
|
||||
void PNP_GetInterfaceDeviceList();
|
||||
void PNP_GetInterfaceDeviceListSize();
|
||||
void PNP_RegisterDeviceClassAssociation();
|
||||
void PNP_UnregisterDeviceClassAssociation();
|
||||
void PNP_GetClassRegProp();
|
||||
void PNP_SetClassRegProp();
|
||||
void PNP_CreateDevInst();
|
||||
void PNP_DeviceInstanceAction();
|
||||
void PNP_GetDeviceStatus();
|
||||
void PNP_SetDeviceProblem();
|
||||
void PNP_DisableDevInst();
|
||||
void PNP_UninstallDevInst();
|
||||
void PNP_AddID();
|
||||
void PNP_RegisterDriver();
|
||||
void PNP_QueryRemove();
|
||||
void PNP_RequestDeviceEject();
|
||||
void PNP_IsDockStationPresent();
|
||||
void PNP_RequestEjectPC();
|
||||
void PNP_HwProfFlags();
|
||||
void PNP_GetHwProfInfo();
|
||||
void PNP_AddEmptyLogConf();
|
||||
void PNP_FreeLogConf();
|
||||
void PNP_GetFirstLogConf();
|
||||
void PNP_GetNextLogConf();
|
||||
void PNP_GetLogConfPriority();
|
||||
void PNP_AddResDes();
|
||||
void PNP_FreeResDes();
|
||||
void PNP_GetNextResDes();
|
||||
void PNP_GetResDesData();
|
||||
void PNP_GetResDesDataSize();
|
||||
void PNP_ModifyResDes();
|
||||
void PNP_DetectResourceLimit();
|
||||
void PNP_QueryResConfList();
|
||||
void PNP_SetHwProf();
|
||||
void PNP_QueryArbitratorFreeData();
|
||||
void PNP_QueryArbitratorFreeSize();
|
||||
void PNP_RunDetection();
|
||||
void PNP_RegisterNotification();
|
||||
void PNP_UnregisterNotification();
|
||||
void PNP_GetCustomDevProp();
|
||||
void PNP_GetVersionInternal();
|
||||
void PNP_GetBlockedDriverInfo();
|
||||
void PNP_GetServerSideDeviceInstallFlags();
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
IDL structures for opendb code
|
||||
|
||||
this defines the structures used in the opendb database code, in
|
||||
ntvfs/common/opendb.c
|
||||
*/
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface opendb
|
||||
{
|
||||
typedef struct {
|
||||
uint32 server;
|
||||
uint32 stream_id;
|
||||
uint32 share_access;
|
||||
uint32 access_mask;
|
||||
pointer file_handle;
|
||||
/* we need a per-entry delete on close, as well as a per-file
|
||||
one, to cope with strange semantics on open */
|
||||
boolean8 delete_on_close;
|
||||
uint32 oplock_level;
|
||||
} opendb_entry;
|
||||
|
||||
typedef struct {
|
||||
uint32 server;
|
||||
pointer notify_ptr;
|
||||
} opendb_pending;
|
||||
|
||||
typedef [public] struct {
|
||||
boolean8 delete_on_close;
|
||||
utf8string path;
|
||||
uint32 num_entries;
|
||||
opendb_entry entries[num_entries];
|
||||
uint32 num_pending;
|
||||
opendb_pending pending[num_pending];
|
||||
} opendb_file;
|
||||
}
|
||||
@@ -0,0 +1,228 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/**
|
||||
DCOM interfaces
|
||||
http://www.ietf.org/internet-drafts/draft-brown-dcom-v1-spec-04.txt
|
||||
*/
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface ObjectRpcBaseTypes
|
||||
{
|
||||
/* COM_MINOR_VERSION = 1 (NT4.0, SP1, SP2, DCOM95). */
|
||||
/* - Initial Release */
|
||||
/* - Must be used when talking to downlevel machines, including */
|
||||
/* on Remote Activation calls. */
|
||||
/* COM_MINOR_VERSION = 2 (NT4.0 SP3 and beyond). */
|
||||
/* - Added ResolveOxid2 to IObjectExporter to retrieve the */
|
||||
/* COM version number of the server. Passed to the NDR engine */
|
||||
/* to fix fatal endian-ness flaw in the way OLEAUTOMATION marshals */
|
||||
/* BSTRS. Previous way used trailing padding, which is not NDR */
|
||||
/* compatible. See Bug# 69189. */
|
||||
/* COM_MINOR_VERSION = 3 (NT4.0 SP4 and DCOM95 builds 1018 and beyond) */
|
||||
/* - OLEAUT32 added two new types to the SAFEARRAY, but SAFEARRAY */
|
||||
/* previously included the "default" keyword, which prevented */
|
||||
/* downlevel NDR engines from correctly handling any extensions. */
|
||||
/* Machines with version >=5.3 don't use "default" and will */
|
||||
/* gracefully handle future extensions to SAFEARRAY. */
|
||||
/* old constants (for convenience) */
|
||||
|
||||
/* current version */
|
||||
const uint16 COM_MAJOR_VERSION = 5;
|
||||
const uint16 COM_MINOR_VERSION = 1;
|
||||
|
||||
/* Body Extensions */
|
||||
const string dcom_ext_debugging = "f1f19680-4d2a-11ce-a66a-0020af6e72f4";
|
||||
const string dcom_ext_extended_error = "f1f19681-4d2a-11ce-a66a-0020af6e72f4";
|
||||
|
||||
/* Component Object Model version number */
|
||||
|
||||
|
||||
typedef [public] struct
|
||||
{
|
||||
uint16 MajorVersion; /* Major version number */
|
||||
uint16 MinorVersion; /* Minor version number */
|
||||
} COMVERSION;
|
||||
|
||||
/* enumeration of additional information present in the call packet. */
|
||||
typedef bitmap {
|
||||
ORPCF_NULL = 0x00, /* no additional info in packet */
|
||||
ORPCF_LOCAL = 0x01, /* call is local to this machine */
|
||||
ORPCF_RESERVED1 = 0x02, /* reserved for local use */
|
||||
ORPCF_RESERVED2 = 0x04, /* reserved for local use */
|
||||
ORPCF_RESERVED3 = 0x08, /* reserved for local use */
|
||||
ORPCF_RESERVED4 = 0x10 /* reserved for local use */
|
||||
} ORPC_FLAGS;
|
||||
|
||||
/* Extension to implicit parameters. */
|
||||
typedef [public] struct
|
||||
{
|
||||
GUID id; /* Extension identifier. */
|
||||
uint32 size; /* Extension size. */
|
||||
[noprint,size_is(((size+7)&~7))] uint8 data[]; /* Extension data. */
|
||||
} ORPC_EXTENT;
|
||||
|
||||
|
||||
/* Array of extensions. */
|
||||
typedef struct
|
||||
{
|
||||
uint32 size; /* Num extents. */
|
||||
uint32 reserved; /* Must be zero. */
|
||||
[size_is(((size+1)&~1))] ORPC_EXTENT **extent; /* extents */
|
||||
} ORPC_EXTENT_ARRAY;
|
||||
|
||||
|
||||
/* implicit 'this' pointer which is the first [in] parameter on */
|
||||
/* every ORPC call. */
|
||||
typedef [public] struct
|
||||
{
|
||||
COMVERSION version; /* COM version number */
|
||||
uint32 flags; /* ORPCF flags for presence of other data */
|
||||
uint32 reserved1; /* set to zero */
|
||||
GUID cid; /* causality id of caller */
|
||||
/* Extensions. */
|
||||
[unique] ORPC_EXTENT_ARRAY *extensions;
|
||||
} ORPCTHIS;
|
||||
|
||||
|
||||
/* implicit 'that' pointer which is the first [out] parameter on */
|
||||
/* every ORPC call. */
|
||||
typedef [public] struct
|
||||
{
|
||||
uint32 flags; /* ORPCF flags for presence of other data */
|
||||
/* Extensions. */
|
||||
[unique] ORPC_EXTENT_ARRAY *extensions;
|
||||
} ORPCTHAT;
|
||||
|
||||
|
||||
/* DUALSTRINGARRAYS are the return type for arrays of network addresses, */
|
||||
/* arrays of endpoints and arrays of both used in many ORPC interfaces */
|
||||
typedef [public,flag(NDR_NOALIGN)] struct
|
||||
{
|
||||
uint16 wTowerId; /* Cannot be zero. */
|
||||
nstring NetworkAddr;
|
||||
} STRINGBINDING;
|
||||
|
||||
typedef [public,nopush,nopull,noprint] struct
|
||||
{
|
||||
STRINGBINDING **stringbindings;
|
||||
} STRINGARRAY;
|
||||
|
||||
typedef [public,nopush,nopull,noprint] struct
|
||||
{
|
||||
STRINGBINDING **stringbindings;
|
||||
SECURITYBINDING **securitybindings;
|
||||
} DUALSTRINGARRAY;
|
||||
|
||||
const uint16 COM_C_AUTHZ_NONE = 0xffff;
|
||||
typedef [public,flag(NDR_NOALIGN)] struct
|
||||
{
|
||||
uint16 wAuthnSvc; /* Cannot be zero. */
|
||||
uint16 wAuthzSvc;
|
||||
nstring PrincName;
|
||||
} SECURITYBINDING;
|
||||
|
||||
/* signature value for OBJREF (object reference, actually the */
|
||||
/* marshaled form of a COM interface).
|
||||
* MEOW apparently stands for "Microsoft Extended Object Wireformat"
|
||||
*/
|
||||
const uint32 OBJREF_SIGNATURE = 0x574f454d; /* 'MEOW' */
|
||||
|
||||
/* flag values for OBJREF */
|
||||
typedef enum {
|
||||
OBJREF_NULL = 0x0, /* NULL pointer */
|
||||
OBJREF_STANDARD = 0x1, /* standard marshaled objref */
|
||||
OBJREF_HANDLER = 0x2, /* handler marshaled objref */
|
||||
OBJREF_CUSTOM = 0x4 /* custom marshaled objref */
|
||||
} OBJREF_FLAGS;
|
||||
|
||||
/* Flag values for a STDOBJREF (standard part of an OBJREF). */
|
||||
/* SORF_OXRES1 - SORF_OXRES8 are reserved for the object exporters */
|
||||
/* use only, object importers must ignore them and must not enforce MBZ. */
|
||||
typedef bitmap {
|
||||
SORF_NULL = 0x0000, /* convenient for initializing SORF */
|
||||
SORF_OXRES1 = 0x0001, /* reserved for exporter */
|
||||
SORF_OXRES2 = 0x0020, /* reserved for exporter */
|
||||
SORF_OXRES3 = 0x0040, /* reserved for exporter */
|
||||
SORF_OXRES4 = 0x0080, /* reserved for exporter */
|
||||
SORF_OXRES5 = 0x0100, /* reserved for exporter */
|
||||
SORF_OXRES6 = 0x0200, /* reserved for exporter */
|
||||
SORF_OXRES7 = 0x0400, /* reserved for exporter */
|
||||
SORF_OXRES8 = 0x0800, /* reserved for exporter */
|
||||
SORF_NOPING = 0x1000 /* Pinging is not required */
|
||||
} STDOBJREF_FLAGS;
|
||||
|
||||
/* standard object reference */
|
||||
typedef [public] struct
|
||||
{
|
||||
uint32 flags; /* STDOBJREF flags (see above) */
|
||||
uint32 cPublicRefs; /* count of references passed */
|
||||
hyper oxid; /* oxid of server with this oid */
|
||||
hyper oid; /* oid of object with this ipid */
|
||||
GUID ipid; /* ipid of interface pointer to this object */
|
||||
} STDOBJREF;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
STDOBJREF std; /* standard objref */
|
||||
STRINGARRAY saResAddr; /* resolver address */
|
||||
} u_standard;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
STDOBJREF std; /* standard objref */
|
||||
GUID clsid; /* Clsid of handler code */
|
||||
STRINGARRAY saResAddr; /* resolver address */
|
||||
} u_handler;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GUID clsid; /* Clsid of unmarshaling code */
|
||||
uint32 cbExtension; /* size of extension data */
|
||||
uint32 size; /* size of data that follows */
|
||||
[noprint] uint8 pData[size]; /* extension + class specific data */
|
||||
} u_custom;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
} u_null;
|
||||
|
||||
typedef [nodiscriminant] union
|
||||
{
|
||||
[case(OBJREF_NULL)] u_null u_null;
|
||||
[case(OBJREF_STANDARD)] u_standard u_standard;
|
||||
[case(OBJREF_HANDLER)] u_handler u_handler;
|
||||
[case(OBJREF_CUSTOM)] u_custom u_custom;
|
||||
} OBJREF_Types;
|
||||
|
||||
/* OBJREF is the format of a marshaled interface pointer. */
|
||||
typedef [public,flag(NDR_LITTLE_ENDIAN)] struct
|
||||
{
|
||||
uint32 signature;
|
||||
uint32 flags; /* OBJREF flags (see above) */
|
||||
GUID iid; /* interface identifier */
|
||||
[switch_is(flags), switch_type(uint32)] OBJREF_Types u_objref;
|
||||
} OBJREF;
|
||||
|
||||
/* wire representation of a marshalled interface pointer */
|
||||
typedef [public] struct
|
||||
{
|
||||
uint32 size;
|
||||
[subcontext(4)] OBJREF obj;
|
||||
} MInterfacePointer;
|
||||
|
||||
typedef [v1_enum,public] enum
|
||||
{
|
||||
COM_OK = 0x00000000,
|
||||
COM_OUTOFMEMORY = 0x80000002,
|
||||
COM_INVALIDARG = 0x80000003,
|
||||
COM_NOINTERFACE = 0x80000004,
|
||||
COM_ACCESSDENIED = 0x80070005,
|
||||
COM_INVALID_OXID = 0x80070776,
|
||||
COM_INVALID_OID = 0x80070777,
|
||||
COM_INVALID_SET = 0x80070778,
|
||||
COM_UNEXPECTED = 0x8000FFFF,
|
||||
COM_CLSNOTFOUND = 0x80040154
|
||||
} COMRESULT;
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
DCOM interfaces
|
||||
http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm
|
||||
*/
|
||||
|
||||
/*
|
||||
The OXID Resolver can turn a OXID (Object Exporter ID) into a
|
||||
RPC binding string that can be used to contact an object
|
||||
|
||||
(used by DCOM)
|
||||
*/
|
||||
|
||||
import "dcom.idl", "orpc.idl";
|
||||
|
||||
[
|
||||
uuid("99fcfec4-5260-101b-bbcb-00aa0021347a"),
|
||||
helpstring("Object Exporter ID Resolver"),
|
||||
endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IOXIDResolver
|
||||
{
|
||||
#define OXID hyper
|
||||
#define SETID hyper
|
||||
#define IPID GUID
|
||||
#define OID GUID
|
||||
|
||||
/* Method to get the protocol sequences, string bindings */
|
||||
/* and machine id for an object server given its OXID. */
|
||||
|
||||
[idempotent] WERROR ResolveOxid (
|
||||
[in] OXID pOxid,
|
||||
[in] uint16 cRequestedProtseqs,
|
||||
[in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
|
||||
[out] DUALSTRINGARRAY **ppdsaOxidBindings,
|
||||
[out,ref] IPID *pipidRemUnknown,
|
||||
[out,ref] uint32 *pAuthnHint
|
||||
);
|
||||
|
||||
/* Simple ping is used to ping a Set. Client machines use this */
|
||||
/* to inform the object exporter that it is still using the */
|
||||
/* members of the set. */
|
||||
/* Returns S_TRUE if the SetId is known by the object exporter, */
|
||||
/* S_FALSE if not. */
|
||||
[idempotent] WERROR SimplePing (
|
||||
[in] SETID *SetId /* Must not be zero */
|
||||
);
|
||||
|
||||
/* Complex ping is used to create sets of OIDs to ping. The */
|
||||
/* whole set can subsequently be pinged using SimplePing, */
|
||||
/* thus reducing network traffic. */
|
||||
[idempotent] WERROR ComplexPing (
|
||||
[in,out,ref] SETID *SetId, /* In of 0 on first call for new set. */
|
||||
[in] uint16 SequenceNum,
|
||||
[in] uint16 cAddToSet,
|
||||
[in] uint16 cDelFromSet,
|
||||
/* add these OIDs to the set */
|
||||
[in, size_is(cAddToSet)] OID AddToSet[],
|
||||
/*remove these OIDs from the set */
|
||||
[in, size_is(cDelFromSet)] OID DelFromSet[],
|
||||
[out,ref] uint16 *PingBackoffFactor/* 2^factor = multipler */
|
||||
);
|
||||
|
||||
/* In some cases the client maybe unsure that a particular */
|
||||
/* binding will reach the server. (For example, when the oxid */
|
||||
/* bindings have more than one TCP/IP binding) This call */
|
||||
/* can be used to validate the binding */
|
||||
/* from the client. */
|
||||
[idempotent] WERROR ServerAlive ();
|
||||
|
||||
/* Method to get the protocol sequences, string bindings, */
|
||||
/* RemoteUnknown IPID and COM version for an object server */
|
||||
/* given its OXID. Supported by DCOM */
|
||||
/* version 5.2 and above. Looks like that means
|
||||
* Windows 2003/XP and above */
|
||||
[idempotent] WERROR ResolveOxid2 (
|
||||
[in] OXID pOxid,
|
||||
[in] uint16 cRequestedProtseqs,
|
||||
[in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
|
||||
[out] DUALSTRINGARRAY **pdsaOxidBindings,
|
||||
[out,ref] IPID *ipidRemUnknown,
|
||||
[out,ref] uint32 *AuthnHint,
|
||||
[out,ref] COMVERSION *ComVersion
|
||||
);
|
||||
typedef struct {
|
||||
COMVERSION version;
|
||||
uint32 unknown1;
|
||||
} COMINFO;
|
||||
|
||||
[idempotent] WERROR ServerAlive2 (
|
||||
[out,ref] COMINFO *info,
|
||||
[out,ref] DUALSTRINGARRAY *dualstring,
|
||||
[out] uint8 unknown2[3]);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
/* IPSec policy agent (Win2k) */
|
||||
[
|
||||
uuid("d335b8f6-cb31-11d0-b0f9-006097ba4e54"),
|
||||
version(1.5),
|
||||
pointer_default(unique),
|
||||
helpstring("IPSec Policy Agent")
|
||||
] interface policyagent
|
||||
{
|
||||
/*****************/
|
||||
/* Function 0x00 */
|
||||
WERROR policyagent_Dummy();
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
protected_storage interface definitions
|
||||
Also seen with UUID:
|
||||
*/
|
||||
|
||||
[ uuid("c9378ff1-16f7-11d0-a0b2-00aa0061426a"),
|
||||
version(1.0),
|
||||
pointer_default(unique)
|
||||
] interface protected_storage
|
||||
{
|
||||
/*****************************/
|
||||
/* Function 0x00 */
|
||||
WERROR ps_XXX ();
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
DCOM interfaces
|
||||
http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm
|
||||
*/
|
||||
|
||||
import "dcom.idl", "orpc.idl";
|
||||
|
||||
[
|
||||
uuid("4d9f4ab8-7d1c-11cf-861e-0020af6e7c57"),
|
||||
pointer_default(unique),
|
||||
endpoint("ncalrpc:", "ncacn_ip_tcp:[135]", "ncacn_np:[\\pipe\\epmapper]")
|
||||
]
|
||||
interface IRemoteActivation
|
||||
{
|
||||
typedef enum
|
||||
{
|
||||
RPC_C_IMP_LEVEL_DEFAULT = 0,
|
||||
RPC_C_IMP_LEVEL_ANONYMOUS = 1,
|
||||
RPC_C_IMP_LEVEL_IDENTIFY = 2,
|
||||
RPC_C_IMP_LEVEL_IMPERSONATE = 3,
|
||||
RPC_C_IMP_LEVEL_DELEGATE = 4
|
||||
} imp_levels;
|
||||
|
||||
const uint32 MODE_GET_CLASS_OBJECT = 0xffffffff;
|
||||
WERROR RemoteActivation (
|
||||
[in] ORPCTHIS this,
|
||||
[out,ref] ORPCTHAT *that,
|
||||
[in] GUID Clsid,
|
||||
[in] [string,charset(UTF16),unique] uint16 *pwszObjectName,
|
||||
[in,unique] MInterfacePointer *pObjectStorage,
|
||||
[in] uint32 ClientImpLevel,
|
||||
[in] uint32 Mode,
|
||||
[in,range(1,32768)] uint32 Interfaces,
|
||||
[in,size_is(Interfaces),unique] GUID *pIIDs,
|
||||
[in] uint16 num_protseqs,
|
||||
[in, size_is(num_protseqs)] uint16 protseq[*],
|
||||
[out,ref] hyper *pOxid,
|
||||
[out,ref] DUALSTRINGARRAY **pdsaOxidBindings,
|
||||
[out,ref] GUID *ipidRemUnknown,
|
||||
[out,ref] uint32 *AuthnHint,
|
||||
[out,ref] COMVERSION *ServerVersion,
|
||||
[out,ref] WERROR *hr,
|
||||
[out,size_is(Interfaces),ref] MInterfacePointer **ifaces,
|
||||
[out,size_is(Interfaces),ref] WERROR *results
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import "orpc.idl";
|
||||
|
||||
[
|
||||
uuid("b9e79e60-3d52-11ce-aaa1-00006901293f"),
|
||||
version(0.2),
|
||||
pointer_default(unique),
|
||||
endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]",
|
||||
"ncalrpc:[EPMAPPER]")
|
||||
] interface rot
|
||||
{
|
||||
WERROR rot_add (
|
||||
[in] uint32 flags,
|
||||
[in] MInterfacePointer *unk,
|
||||
[in] MInterfacePointer *moniker,
|
||||
[out] uint32 *rotid
|
||||
);
|
||||
|
||||
WERROR rot_remove (
|
||||
[in] uint32 rotid
|
||||
);
|
||||
|
||||
WERROR rot_is_listed (
|
||||
[in] MInterfacePointer *moniker
|
||||
);
|
||||
|
||||
WERROR rot_get_interface_pointer (
|
||||
[in] MInterfacePointer *moniker,
|
||||
[out] MInterfacePointer *ip
|
||||
);
|
||||
|
||||
WERROR rot_set_modification_time (
|
||||
[in] uint32 rotid,
|
||||
[in] NTTIME *t
|
||||
);
|
||||
|
||||
WERROR rot_get_modification_time (
|
||||
[in] MInterfacePointer *moniker,
|
||||
[out] NTTIME *t
|
||||
);
|
||||
|
||||
WERROR rot_enum (
|
||||
[out] MInterfacePointer *EnumMoniker
|
||||
);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
[
|
||||
pointer_default(unique),
|
||||
helpstring("SASL helpers")
|
||||
]
|
||||
interface sasl_helpers {
|
||||
typedef [public,flag(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX)] struct {
|
||||
[value(strlen_m(authid))] uint16 authid_length;
|
||||
[charset(UTF8)] uint8 authid[authid_length];
|
||||
uint16 passwd_length;
|
||||
uint8 passwd[passwd_length];
|
||||
[value(strlen_m(service))] uint16 service_length;
|
||||
[charset(UTF8)] uint8 service[service_length];
|
||||
[value(strlen_m(realm))] uint16 realm_length;
|
||||
[charset(UTF8)] uint8 realm[realm_length];
|
||||
} saslauthdRequest;
|
||||
|
||||
void decode_saslauthd(
|
||||
[in] saslauthdRequest req
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
security configuration editor interface definitions
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("93149ca2-973b-11d1-8c39-00c04fb984f9"),
|
||||
version(0.0),
|
||||
pointer_default(unique),
|
||||
helpstring("Security Configuration Editor")
|
||||
]
|
||||
interface scerpc
|
||||
{
|
||||
|
||||
/*****************/
|
||||
/* Function 0x00 */
|
||||
WERROR scerpc_Unknown0();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
schannel structures
|
||||
*/
|
||||
|
||||
import "netlogon.idl", "nbt.idl";
|
||||
|
||||
interface schannel
|
||||
{
|
||||
/*
|
||||
a schannel bind blob - used in dcerpc auth_info
|
||||
on a schannel
|
||||
*/
|
||||
typedef struct {
|
||||
astring domain;
|
||||
astring workstation;
|
||||
} schannel_bind_3;
|
||||
|
||||
typedef struct {
|
||||
astring domain;
|
||||
astring workstation;
|
||||
nbt_string dnsdomain;
|
||||
nbt_string dnsworkstation;
|
||||
} schannel_bind_23;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case (3)] schannel_bind_3 info3;
|
||||
[case (23)] schannel_bind_23 info23;
|
||||
} schannel_bind_info;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 unknown1; /* seems to need to be 0 */
|
||||
uint32 bind_type;
|
||||
[switch_is(bind_type)] schannel_bind_info u;
|
||||
} schannel_bind;
|
||||
|
||||
/* a bind_ack blob */
|
||||
typedef [public] struct {
|
||||
uint32 unknown1; /* 1 */
|
||||
uint32 unknown2; /* 0 */
|
||||
uint32 unknown3; /* 0x006c0000 */
|
||||
} schannel_bind_ack;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
NOEMIT
|
||||
@@ -0,0 +1,356 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
security IDL structures
|
||||
*/
|
||||
|
||||
import "misc.idl";
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface security
|
||||
{
|
||||
/*
|
||||
access masks are divided up like this:
|
||||
0xabccdddd
|
||||
where
|
||||
a = generic rights bits SEC_GENERIC_
|
||||
b = flags SEC_FLAG_
|
||||
c = standard rights bits SEC_STD_
|
||||
d = object type specific bits SEC_{FILE,DIR,REG,xxx}_
|
||||
|
||||
common combinations of bits are prefixed with SEC_RIGHTS_
|
||||
*/
|
||||
const int SEC_MASK_GENERIC = 0xF0000000;
|
||||
const int SEC_MASK_FLAGS = 0x0F000000;
|
||||
const int SEC_MASK_STANDARD = 0x00FF0000;
|
||||
const int SEC_MASK_SPECIFIC = 0x0000FFFF;
|
||||
|
||||
/* generic bits */
|
||||
const int SEC_GENERIC_ALL = 0x10000000;
|
||||
const int SEC_GENERIC_EXECUTE = 0x20000000;
|
||||
const int SEC_GENERIC_WRITE = 0x40000000;
|
||||
const int SEC_GENERIC_READ = 0x80000000;
|
||||
|
||||
/* flag bits */
|
||||
const int SEC_FLAG_SYSTEM_SECURITY = 0x01000000;
|
||||
const int SEC_FLAG_MAXIMUM_ALLOWED = 0x02000000;
|
||||
|
||||
/* standard bits */
|
||||
const int SEC_STD_DELETE = 0x00010000;
|
||||
const int SEC_STD_READ_CONTROL = 0x00020000;
|
||||
const int SEC_STD_WRITE_DAC = 0x00040000;
|
||||
const int SEC_STD_WRITE_OWNER = 0x00080000;
|
||||
const int SEC_STD_SYNCHRONIZE = 0x00100000;
|
||||
const int SEC_STD_REQUIRED = 0x000F0000;
|
||||
const int SEC_STD_ALL = 0x001F0000;
|
||||
|
||||
/* file specific bits */
|
||||
const int SEC_FILE_READ_DATA = 0x00000001;
|
||||
const int SEC_FILE_WRITE_DATA = 0x00000002;
|
||||
const int SEC_FILE_APPEND_DATA = 0x00000004;
|
||||
const int SEC_FILE_READ_EA = 0x00000008;
|
||||
const int SEC_FILE_WRITE_EA = 0x00000010;
|
||||
const int SEC_FILE_EXECUTE = 0x00000020;
|
||||
const int SEC_FILE_READ_ATTRIBUTE = 0x00000080;
|
||||
const int SEC_FILE_WRITE_ATTRIBUTE = 0x00000100;
|
||||
const int SEC_FILE_ALL = 0x000001ff;
|
||||
|
||||
/* directory specific bits */
|
||||
const int SEC_DIR_LIST = 0x00000001;
|
||||
const int SEC_DIR_ADD_FILE = 0x00000002;
|
||||
const int SEC_DIR_ADD_SUBDIR = 0x00000004;
|
||||
const int SEC_DIR_READ_EA = 0x00000008;
|
||||
const int SEC_DIR_WRITE_EA = 0x00000010;
|
||||
const int SEC_DIR_TRAVERSE = 0x00000020;
|
||||
const int SEC_DIR_DELETE_CHILD = 0x00000040;
|
||||
const int SEC_DIR_READ_ATTRIBUTE = 0x00000080;
|
||||
const int SEC_DIR_WRITE_ATTRIBUTE = 0x00000100;
|
||||
|
||||
/* registry entry specific bits */
|
||||
const int SEC_REG_QUERY_VALUE = 0x00000001;
|
||||
const int SEC_REG_SET_VALUE = 0x00000002;
|
||||
const int SEC_REG_CREATE_SUBKEY = 0x00000004;
|
||||
const int SEC_REG_ENUM_SUBKEYS = 0x00000008;
|
||||
const int SEC_REG_NOTIFY = 0x00000010;
|
||||
const int SEC_REG_CREATE_LINK = 0x00000020;
|
||||
|
||||
/* ldap specific access bits */
|
||||
const int SEC_ADS_CREATE_CHILD = 0x00000001;
|
||||
const int SEC_ADS_DELETE_CHILD = 0x00000002;
|
||||
const int SEC_ADS_LIST = 0x00000004;
|
||||
const int SEC_ADS_SELF_WRITE = 0x00000008;
|
||||
const int SEC_ADS_READ_PROP = 0x00000010;
|
||||
const int SEC_ADS_WRITE_PROP = 0x00000020;
|
||||
const int SEC_ADS_DELETE_TREE = 0x00000040;
|
||||
const int SEC_ADS_LIST_OBJECT = 0x00000080;
|
||||
const int SEC_ADS_CONTROL_ACCESS = 0x00000100;
|
||||
|
||||
/* generic->specific mappings for files */
|
||||
const int SEC_RIGHTS_FILE_READ = SEC_STD_READ_CONTROL |
|
||||
SEC_STD_SYNCHRONIZE |
|
||||
SEC_FILE_READ_DATA |
|
||||
SEC_FILE_READ_ATTRIBUTE |
|
||||
SEC_FILE_READ_EA;
|
||||
|
||||
const int SEC_RIGHTS_FILE_WRITE = SEC_STD_READ_CONTROL |
|
||||
SEC_STD_SYNCHRONIZE |
|
||||
SEC_FILE_WRITE_DATA |
|
||||
SEC_FILE_WRITE_ATTRIBUTE |
|
||||
SEC_FILE_WRITE_EA |
|
||||
SEC_FILE_APPEND_DATA;
|
||||
|
||||
const int SEC_RIGHTS_FILE_EXECUTE = SEC_STD_SYNCHRONIZE |
|
||||
SEC_STD_READ_CONTROL |
|
||||
SEC_FILE_READ_ATTRIBUTE |
|
||||
SEC_FILE_EXECUTE;
|
||||
|
||||
const int SEC_RIGHTS_FILE_ALL = SEC_STD_ALL | SEC_FILE_ALL;
|
||||
|
||||
/* generic->specific mappings for directories (same as files) */
|
||||
const int SEC_RIGHTS_DIR_READ = SEC_RIGHTS_FILE_READ;
|
||||
const int SEC_RIGHTS_DIR_WRITE = SEC_RIGHTS_FILE_WRITE;
|
||||
const int SEC_RIGHTS_DIR_EXECUTE = SEC_RIGHTS_FILE_EXECUTE;
|
||||
const int SEC_RIGHTS_DIR_ALL = SEC_RIGHTS_FILE_ALL;
|
||||
|
||||
|
||||
/***************************************************************/
|
||||
/* WELL KNOWN SIDS */
|
||||
|
||||
/* a NULL sid */
|
||||
const string SID_NULL = "S-1-0-0";
|
||||
|
||||
/* the world domain */
|
||||
const string SID_WORLD_DOMAIN = "S-1-1";
|
||||
const string SID_WORLD = "S-1-1-0";
|
||||
|
||||
/* SECURITY_CREATOR_SID_AUTHORITY */
|
||||
const string SID_CREATOR_OWNER_DOMAIN = "S-1-3";
|
||||
const string SID_CREATOR_OWNER = "S-1-3-0";
|
||||
const string SID_CREATOR_GROUP = "S-1-3-1";
|
||||
|
||||
/* SECURITY_NT_AUTHORITY */
|
||||
const string SID_NT_AUTHORITY = "S-1-5";
|
||||
const string SID_NT_DIALUP = "S-1-5-1";
|
||||
const string SID_NT_NETWORK = "S-1-5-2";
|
||||
const string SID_NT_BATCH = "S-1-5-3";
|
||||
const string SID_NT_INTERACTIVE = "S-1-5-4";
|
||||
const string SID_NT_SERVICE = "S-1-5-6";
|
||||
const string SID_NT_ANONYMOUS = "S-1-5-7";
|
||||
const string SID_NT_PROXY = "S-1-5-8";
|
||||
const string SID_NT_ENTERPRISE_DCS = "S-1-5-9";
|
||||
const string SID_NT_SELF = "S-1-5-10";
|
||||
const string SID_NT_AUTHENTICATED_USERS = "S-1-5-11";
|
||||
const string SID_NT_RESTRICTED = "S-1-5-12";
|
||||
const string SID_NT_TERMINAL_SERVER_USERS = "S-1-5-13";
|
||||
const string SID_NT_REMOTE_INTERACTIVE = "S-1-5-14";
|
||||
const string SID_NT_THIS_ORGANISATION = "S-1-5-15";
|
||||
const string SID_NT_SYSTEM = "S-1-5-18";
|
||||
const string SID_NT_LOCAL_SERVICE = "S-1-5-19";
|
||||
const string SID_NT_NETWORK_SERVICE = "S-1-5-20";
|
||||
|
||||
/* SECURITY_BUILTIN_DOMAIN_RID */
|
||||
const string SID_BUILTIN = "S-1-5-32";
|
||||
const string SID_BUILTIN_ADMINISTRATORS = "S-1-5-32-544";
|
||||
const string SID_BUILTIN_USERS = "S-1-5-32-545";
|
||||
const string SID_BUILTIN_GUESTS = "S-1-5-32-546";
|
||||
const string SID_BUILTIN_POWER_USERS = "S-1-5-32-547";
|
||||
const string SID_BUILTIN_ACCOUNT_OPERATORS = "S-1-5-32-548";
|
||||
const string SID_BUILTIN_SERVER_OPERATORS = "S-1-5-32-549";
|
||||
const string SID_BUILTIN_PRINT_OPERATORS = "S-1-5-32-550";
|
||||
const string SID_BUILTIN_BACKUP_OPERATORS = "S-1-5-32-551";
|
||||
const string SID_BUILTIN_REPLICATOR = "S-1-5-32-552";
|
||||
const string SID_BUILTIN_RAS_SERVERS = "S-1-5-32-553";
|
||||
const string SID_BUILTIN_PREW2K = "S-1-5-32-554";
|
||||
|
||||
/* well-known domain RIDs */
|
||||
const int DOMAIN_RID_LOGON = 9;
|
||||
const int DOMAIN_RID_ADMINISTRATOR = 500;
|
||||
const int DOMAIN_RID_GUEST = 501;
|
||||
const int DOMAIN_RID_ADMINS = 512;
|
||||
const int DOMAIN_RID_USERS = 513;
|
||||
const int DOMAIN_RID_DCS = 516;
|
||||
const int DOMAIN_RID_CERT_ADMINS = 517;
|
||||
const int DOMAIN_RID_SCHEMA_ADMINS = 518;
|
||||
const int DOMAIN_RID_ENTERPRISE_ADMINS = 519;
|
||||
|
||||
|
||||
/*
|
||||
privilege IDs. Please keep the IDs below 64. If we get more
|
||||
than 64 then we need to change security_token
|
||||
*/
|
||||
typedef enum {
|
||||
SEC_PRIV_SECURITY = 1,
|
||||
SEC_PRIV_BACKUP = 2,
|
||||
SEC_PRIV_RESTORE = 3,
|
||||
SEC_PRIV_SYSTEMTIME = 4,
|
||||
SEC_PRIV_SHUTDOWN = 5,
|
||||
SEC_PRIV_REMOTE_SHUTDOWN = 6,
|
||||
SEC_PRIV_TAKE_OWNERSHIP = 7,
|
||||
SEC_PRIV_DEBUG = 8,
|
||||
SEC_PRIV_SYSTEM_ENVIRONMENT = 9,
|
||||
SEC_PRIV_SYSTEM_PROFILE = 10,
|
||||
SEC_PRIV_PROFILE_SINGLE_PROCESS = 11,
|
||||
SEC_PRIV_INCREASE_BASE_PRIORITY = 12,
|
||||
SEC_PRIV_LOAD_DRIVER = 13,
|
||||
SEC_PRIV_CREATE_PAGEFILE = 14,
|
||||
SEC_PRIV_INCREASE_QUOTA = 15,
|
||||
SEC_PRIV_CHANGE_NOTIFY = 16,
|
||||
SEC_PRIV_UNDOCK = 17,
|
||||
SEC_PRIV_MANAGE_VOLUME = 18,
|
||||
SEC_PRIV_IMPERSONATE = 19,
|
||||
SEC_PRIV_CREATE_GLOBAL = 20,
|
||||
SEC_PRIV_ENABLE_DELEGATION = 21,
|
||||
SEC_PRIV_INTERACTIVE_LOGON = 22,
|
||||
SEC_PRIV_NETWORK_LOGON = 23,
|
||||
SEC_PRIV_REMOTE_INTERACTIVE_LOGON = 24
|
||||
} sec_privilege;
|
||||
|
||||
|
||||
/* a domain SID. Note that unlike Samba3 this contains a pointer,
|
||||
so you can't copy them using assignment */
|
||||
typedef [public,gensize,noprint,noejs,nosize] struct {
|
||||
uint8 sid_rev_num; /**< SID revision number */
|
||||
[range(0,15)] int8 num_auths; /**< Number of sub-authorities */
|
||||
uint8 id_auth[6]; /**< Identifier Authority */
|
||||
uint32 sub_auths[num_auths];
|
||||
} dom_sid;
|
||||
|
||||
typedef [bitmap8bit] bitmap {
|
||||
SEC_ACE_FLAG_OBJECT_INHERIT = 0x01,
|
||||
SEC_ACE_FLAG_CONTAINER_INHERIT = 0x02,
|
||||
SEC_ACE_FLAG_NO_PROPAGATE_INHERIT = 0x04,
|
||||
SEC_ACE_FLAG_INHERIT_ONLY = 0x08,
|
||||
SEC_ACE_FLAG_INHERITED_ACE = 0x10,
|
||||
SEC_ACE_FLAG_VALID_INHERIT = 0x0f,
|
||||
SEC_ACE_FLAG_SUCCESSFUL_ACCESS = 0x40,
|
||||
SEC_ACE_FLAG_FAILED_ACCESS = 0x80
|
||||
} security_ace_flags;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
SEC_ACE_TYPE_ACCESS_ALLOWED = 0,
|
||||
SEC_ACE_TYPE_ACCESS_DENIED = 1,
|
||||
SEC_ACE_TYPE_SYSTEM_AUDIT = 2,
|
||||
SEC_ACE_TYPE_SYSTEM_ALARM = 3,
|
||||
SEC_ACE_TYPE_ALLOWED_COMPOUND = 4,
|
||||
SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT = 5,
|
||||
SEC_ACE_TYPE_ACCESS_DENIED_OBJECT = 6,
|
||||
SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT = 7,
|
||||
SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT = 8
|
||||
} security_ace_type;
|
||||
|
||||
typedef bitmap {
|
||||
SEC_ACE_OBJECT_TYPE_PRESENT = 0x00000001,
|
||||
SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002
|
||||
} security_ace_object_flags;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
/* this is the 'schemaIDGUID' attribute of the attribute object in the schema naming context */
|
||||
[case(SEC_ACE_OBJECT_TYPE_PRESENT)] GUID type;
|
||||
[default];
|
||||
} security_ace_object_type;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
/* this is the 'schemaIDGUID' attribute of the objectclass object in the schema naming context
|
||||
* (of the parent container)
|
||||
*/
|
||||
[case(SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT)] GUID inherited_type;
|
||||
[default];
|
||||
} security_ace_object_inherited_type;
|
||||
|
||||
typedef struct {
|
||||
security_ace_object_flags flags;
|
||||
[switch_is(flags & SEC_ACE_OBJECT_TYPE_PRESENT)] security_ace_object_type type;
|
||||
[switch_is(flags & SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT)] security_ace_object_inherited_type inherited_type;
|
||||
} security_ace_object;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT)] security_ace_object object;
|
||||
[case(SEC_ACE_TYPE_ACCESS_DENIED_OBJECT)] security_ace_object object;
|
||||
[case(SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT)] security_ace_object object;
|
||||
[case(SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT)] security_ace_object object;
|
||||
[default];
|
||||
} security_ace_object_ctr;
|
||||
|
||||
typedef [public,gensize,nosize] struct {
|
||||
security_ace_type type; /* SEC_ACE_TYPE_* */
|
||||
security_ace_flags flags; /* SEC_ACE_FLAG_* */
|
||||
[value(ndr_size_security_ace(r,ndr->flags))] uint16 size;
|
||||
uint32 access_mask;
|
||||
[switch_is(type)] security_ace_object_ctr object;
|
||||
dom_sid trustee;
|
||||
} security_ace;
|
||||
|
||||
typedef enum {
|
||||
SECURITY_ACL_REVISION_NT4 = 2,
|
||||
SECURITY_ACL_REVISION_ADS = 4
|
||||
} security_acl_revision;
|
||||
|
||||
const uint NT4_ACL_REVISION = SECURITY_ACL_REVISION_NT4;
|
||||
|
||||
typedef [public,gensize,nosize] struct {
|
||||
security_acl_revision revision;
|
||||
[value(ndr_size_security_acl(r,ndr->flags))] uint16 size;
|
||||
[range(0,1000)] uint32 num_aces;
|
||||
security_ace aces[num_aces];
|
||||
} security_acl;
|
||||
|
||||
/* default revision for new ACLs */
|
||||
typedef [enum8bit] enum {
|
||||
SECURITY_DESCRIPTOR_REVISION_1 = 1
|
||||
} security_descriptor_revision;
|
||||
|
||||
const int SD_REVISION = SECURITY_DESCRIPTOR_REVISION_1;
|
||||
|
||||
/* security_descriptor->type bits */
|
||||
typedef [bitmap16bit] bitmap {
|
||||
SEC_DESC_OWNER_DEFAULTED = 0x0001,
|
||||
SEC_DESC_GROUP_DEFAULTED = 0x0002,
|
||||
SEC_DESC_DACL_PRESENT = 0x0004,
|
||||
SEC_DESC_DACL_DEFAULTED = 0x0008,
|
||||
SEC_DESC_SACL_PRESENT = 0x0010,
|
||||
SEC_DESC_SACL_DEFAULTED = 0x0020,
|
||||
SEC_DESC_DACL_TRUSTED = 0x0040,
|
||||
SEC_DESC_SERVER_SECURITY = 0x0080,
|
||||
SEC_DESC_DACL_AUTO_INHERIT_REQ = 0x0100,
|
||||
SEC_DESC_SACL_AUTO_INHERIT_REQ = 0x0200,
|
||||
SEC_DESC_DACL_AUTO_INHERITED = 0x0400,
|
||||
SEC_DESC_SACL_AUTO_INHERITED = 0x0800,
|
||||
SEC_DESC_DACL_PROTECTED = 0x1000,
|
||||
SEC_DESC_SACL_PROTECTED = 0x2000,
|
||||
SEC_DESC_RM_CONTROL_VALID = 0x4000,
|
||||
SEC_DESC_SELF_RELATIVE = 0x8000
|
||||
} security_descriptor_type;
|
||||
|
||||
typedef [gensize,nosize,public,flag(NDR_LITTLE_ENDIAN)] struct {
|
||||
security_descriptor_revision revision;
|
||||
security_descriptor_type type; /* SEC_DESC_xxxx flags */
|
||||
[relative] dom_sid *owner_sid;
|
||||
[relative] dom_sid *group_sid;
|
||||
[relative] security_acl *sacl; /* system ACL */
|
||||
[relative] security_acl *dacl; /* user (discretionary) ACL */
|
||||
} security_descriptor;
|
||||
|
||||
typedef [public] struct {
|
||||
[range(0,0x40000),value(ndr_size_security_descriptor(sd,ndr->flags))] uint32 sd_size;
|
||||
[subcontext(4)] security_descriptor *sd;
|
||||
} sec_desc_buf;
|
||||
|
||||
typedef [public] struct {
|
||||
dom_sid *user_sid;
|
||||
dom_sid *group_sid;
|
||||
uint32 num_sids;
|
||||
[size_is(num_sids)] dom_sid *sids[*];
|
||||
udlong privilege_mask;
|
||||
} security_token;
|
||||
|
||||
/* bits that determine which parts of a security descriptor
|
||||
are being queried/set */
|
||||
typedef [public,bitmap32bit] bitmap {
|
||||
SECINFO_OWNER = 0x00000001,
|
||||
SECINFO_GROUP = 0x00000002,
|
||||
SECINFO_DACL = 0x00000004,
|
||||
SECINFO_SACL = 0x00000008
|
||||
} security_secinfo;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,459 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
svcctl interface definitions
|
||||
*/
|
||||
|
||||
[ uuid("367abb81-9844-35f1-ad32-98f038001003"),
|
||||
version(2.0),
|
||||
pointer_default(unique),
|
||||
pointer_default_top(unique),
|
||||
endpoint("ncacn_np:[\\pipe\\svcctl]", "ncalrpc:"),
|
||||
helpstring("Service Control")
|
||||
] interface svcctl
|
||||
{
|
||||
typedef struct {
|
||||
uint32 is_locked;
|
||||
[string,charset(UTF16)] uint16 *lock_owner;
|
||||
uint32 lock_duration;
|
||||
} SERVICE_LOCK_STATUS;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
SERVICE_STOPPED = 1,
|
||||
SERVICE_START_PENDING = 2,
|
||||
SERVICE_STOP_PENDING = 3,
|
||||
SERVICE_RUNNING = 4,
|
||||
SERVICE_CONTINUE_PENDING = 5,
|
||||
SERVICE_PAUSE_PENDING = 6,
|
||||
SERVICE_PAUSED = 7
|
||||
} SERVICE_STATE;
|
||||
|
||||
typedef struct {
|
||||
uint32 type;
|
||||
uint32 state;
|
||||
uint32 controls_accepted;
|
||||
uint32 win32_exit_code;
|
||||
uint32 service_exit_code;
|
||||
uint32 check_point;
|
||||
uint32 wait_hint;
|
||||
} SERVICE_STATUS;
|
||||
|
||||
typedef struct {
|
||||
[relative] astring *service_name;
|
||||
[relative] astring *display_name;
|
||||
SERVICE_STATUS status;
|
||||
} ENUM_SERVICE_STATUS;
|
||||
|
||||
const int SERVICE_NO_CHANGE = 0xffffffff;
|
||||
const int SERVICE_TYPE_KERNEL_DRIVER = 0x01;
|
||||
const int SERVICE_TYPE_FS_DRIVER = 0x02;
|
||||
const int SERVICE_TYPE_ADAPTER = 0x04;
|
||||
const int SERVICE_TYPE_RECOGNIZER_DRIVER = 0x08;
|
||||
const int SERVICE_TYPE_DRIVER=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER;
|
||||
const int SERVICE_TYPE_WIN32_OWN_PROCESS = 0x10;
|
||||
const int SERVICE_TYPE_WIN32_SHARE_PROCESS = 0x20;
|
||||
const int SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS;
|
||||
const int SERVICE_INTERACTIVE_PROCESS = 0x00000100;
|
||||
|
||||
const int SERVICE_STATE_ACTIVE = 0x01;
|
||||
const int SERVICE_STATE_INACTIVE = 0x02;
|
||||
const int SERVICE_STATE_ALL = 0x03;
|
||||
|
||||
typedef [public,bitmap32bit] bitmap {
|
||||
SV_TYPE_WORKSTATION = 0x00000001,
|
||||
SV_TYPE_SERVER = 0x00000002,
|
||||
SV_TYPE_SQLSERVER = 0x00000004,
|
||||
SV_TYPE_DOMAIN_CTRL = 0x00000008,
|
||||
SV_TYPE_DOMAIN_BAKCTRL = 0x00000010,
|
||||
SV_TYPE_TIME_SOURCE = 0x00000020,
|
||||
SV_TYPE_AFP = 0x00000040,
|
||||
SV_TYPE_NOVELL = 0x00000080,
|
||||
|
||||
SV_TYPE_DOMAIN_MEMBER = 0x00000100,
|
||||
SV_TYPE_PRINTQ_SERVER = 0x00000200,
|
||||
SV_TYPE_DIALIN_SERVER = 0x00000400,
|
||||
SV_TYPE_SERVER_UNIX = 0x00000800,
|
||||
SV_TYPE_NT = 0x00001000,
|
||||
SV_TYPE_WFW = 0x00002000,
|
||||
SV_TYPE_SERVER_MFPN = 0x00004000,
|
||||
SV_TYPE_SERVER_NT = 0x00008000,
|
||||
SV_TYPE_POTENTIAL_BROWSER = 0x00010000,
|
||||
SV_TYPE_BACKUP_BROWSER = 0x00020000,
|
||||
SV_TYPE_MASTER_BROWSER = 0x00040000,
|
||||
SV_TYPE_DOMAIN_MASTER = 0x00080000,
|
||||
SV_TYPE_SERVER_OSF = 0x00100000,
|
||||
SV_TYPE_SERVER_VMS = 0x00200000,
|
||||
SV_TYPE_WIN95_PLUS = 0x00400000,
|
||||
SV_TYPE_DFS_SERVER = 0x00800000,
|
||||
SV_TYPE_ALTERNATE_XPORT = 0x20000000,
|
||||
SV_TYPE_LOCAL_LIST_ONLY = 0x40000000,
|
||||
SV_TYPE_DOMAIN_ENUM = 0x80000000
|
||||
} svcctl_ServerType;
|
||||
|
||||
const uint32 SV_TYPE_ALL = 0xFFFFFFFF;
|
||||
|
||||
/*****************/
|
||||
/* Function 0x00 */
|
||||
WERROR svcctl_CloseServiceHandle(
|
||||
[in,out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x01 */
|
||||
|
||||
typedef enum {
|
||||
FIXME=1
|
||||
} SERVICE_CONTROL;
|
||||
|
||||
WERROR svcctl_ControlService(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 control,
|
||||
[out,ref] SERVICE_STATUS *status
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x02 */
|
||||
WERROR svcctl_DeleteService([in,ref] policy_handle *handle);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x03 */
|
||||
|
||||
WERROR svcctl_LockServiceDatabase(
|
||||
[in,ref] policy_handle *handle,
|
||||
[out] policy_handle lock
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x04 */
|
||||
WERROR svcctl_QueryServiceObjectSecurity();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x05 */
|
||||
WERROR svcctl_SetServiceObjectSecurity();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x06 */
|
||||
WERROR svcctl_QueryServiceStatus(
|
||||
[in,ref] policy_handle *handle,
|
||||
[out,ref] SERVICE_STATUS *status);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x07 */
|
||||
WERROR svcctl_SetServiceStatus();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x08 */
|
||||
WERROR svcctl_UnlockServiceDatabase(
|
||||
[in,out,ref] policy_handle *lock
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x09 */
|
||||
WERROR svcctl_NotifyBootConfigStatus();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0a */
|
||||
WERROR svcctl_SCSetServiceBitsW(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 bits,
|
||||
[in] boolean32 bitson,
|
||||
[in] boolean32 immediate);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0b */
|
||||
WERROR svcctl_ChangeServiceConfigW([in,ref] policy_handle *handle,
|
||||
[in] uint32 type,
|
||||
[in] uint32 start_type,
|
||||
[in] uint32 error_control,
|
||||
[in] [string,charset(UTF16)] uint16 *binary_path,
|
||||
[in] [string,charset(UTF16)] uint16 *load_order_group,
|
||||
[in,out] uint32 *tag_id,
|
||||
[in,size_is(dependencies_size)] uint8 *dependencies,
|
||||
[in] uint32 dependencies_size,
|
||||
[in] [string,charset(UTF16)] uint16 *service_start_name,
|
||||
[in,size_is(password_size)] uint8 *password,
|
||||
[in] uint32 password_size,
|
||||
[in] [string,charset(UTF16)] uint16 *display_name);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0c */
|
||||
WERROR svcctl_CreateServiceW([in,ref] policy_handle *scmanager_handle,
|
||||
[in] [string,charset(UTF16)] uint16 service_name[],
|
||||
[in] [string,charset(UTF16)] uint16 *display_name,
|
||||
[in] uint32 desired_access,
|
||||
[in] uint32 type,
|
||||
[in] uint32 start_type,
|
||||
[in] uint32 error_control,
|
||||
[in] [string,charset(UTF16)] uint16 binary_path[],
|
||||
[in] [string,charset(UTF16)] uint16 *load_order_group,
|
||||
[in,out] uint32 *tag_id,
|
||||
[in,size_is(dependencies_size)] uint8 *dependencies,
|
||||
[in] uint32 dependencies_size,
|
||||
[in] [string,charset(UTF16)] uint16 *service_start_name,
|
||||
[in,size_is(password_size)] uint8 *password,
|
||||
[in] uint32 password_size,
|
||||
[out,ref] policy_handle *handle);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0d */
|
||||
WERROR svcctl_EnumDependentServicesW([in,ref] policy_handle *service,
|
||||
[in] uint32 state,
|
||||
[out] ENUM_SERVICE_STATUS *status,
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed,
|
||||
[out] uint32 services_returned);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x0e */
|
||||
WERROR svcctl_EnumServicesStatusW(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 type,
|
||||
[in] uint32 state,
|
||||
[in] uint32 buf_size,
|
||||
[out,size_is(buf_size)] uint8 service[*],
|
||||
[out] uint32 bytes_needed,
|
||||
[out] uint32 services_returned,
|
||||
[in,out] uint32 *resume_handle
|
||||
);
|
||||
/*****************/
|
||||
/* Function 0x0f */
|
||||
WERROR svcctl_OpenSCManagerW(
|
||||
[in] [string,charset(UTF16)] uint16 *MachineName,
|
||||
[in] [string,charset(UTF16)] uint16 *DatabaseName,
|
||||
[in] uint32 access_mask,
|
||||
[out,ref] policy_handle *handle);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x10 */
|
||||
WERROR svcctl_OpenServiceW([in,ref] policy_handle *scmanager_handle,
|
||||
[in] [string,charset(UTF16)] uint16 ServiceName[],
|
||||
[in] uint32 access_mask,
|
||||
[out,ref] policy_handle *handle);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x11 */
|
||||
WERROR svcctl_QueryServiceConfigW([in,ref] policy_handle *handle,
|
||||
[out] uint8 query[buf_size], /*QUERY_SERVICE_CONFIG */
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x12 */
|
||||
WERROR svcctl_QueryServiceLockStatusW(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 buf_size,
|
||||
[out,ref] SERVICE_LOCK_STATUS *status,
|
||||
[out,ref] uint32 *required_buf_size
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x13 */
|
||||
WERROR svcctl_StartServiceW(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 NumArgs,
|
||||
[in,length_is(NumArgs)] [string,charset(UTF16)] uint16 *Arguments);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x14 */
|
||||
WERROR svcctl_GetServiceDisplayNameW([in,ref] policy_handle *handle,
|
||||
[in] [string,charset(UTF16)] uint16 *service_name,
|
||||
[out] [string,charset(UTF16)] uint16 *display_name,
|
||||
[in,out] uint32 *display_name_length);
|
||||
/*****************/
|
||||
/* Function 0x15 */
|
||||
WERROR svcctl_GetServiceKeyNameW([in,ref] policy_handle *handle,
|
||||
[in] [string,charset(UTF16)] uint16 *service_name,
|
||||
[out] [string,charset(UTF16)] uint16 *key_name,
|
||||
[in,out] uint32 *display_name_length);
|
||||
/*****************/
|
||||
/* Function 0x16 */
|
||||
WERROR svcctl_SCSetServiceBitsA(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 bits,
|
||||
[in] boolean32 bitson,
|
||||
[in] boolean32 immediate);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x17 */
|
||||
WERROR svcctl_ChangeServiceConfigA([in,ref] policy_handle *handle,
|
||||
[in] uint32 type,
|
||||
[in] uint32 start,
|
||||
[in] uint32 error,
|
||||
[in] [string,charset(UTF16)] uint16 *binary_path,
|
||||
[in] [string,charset(UTF16)] uint16 *load_order_group,
|
||||
[out] uint32 tag_id,
|
||||
[in] [string,charset(UTF16)] uint16 *dependencies,
|
||||
[in] [string,charset(UTF16)] uint16 *service_start_name,
|
||||
[in] [string,charset(UTF16)] uint16 *password,
|
||||
[in] [string,charset(UTF16)] uint16 *display_name);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x18 */
|
||||
WERROR svcctl_CreateServiceA([in,ref] policy_handle *handle,
|
||||
[in] [string,charset(UTF16)] uint16 *ServiceName,
|
||||
[in] [string,charset(UTF16)] uint16 *DisplayName,
|
||||
[in] uint32 desired_access,
|
||||
[in] uint32 type,
|
||||
[in] uint32 start_type,
|
||||
[in] uint32 error_control,
|
||||
[in] [string,charset(UTF16)] uint16 *binary_path,
|
||||
[in] [string,charset(UTF16)] uint16 *LoadOrderGroupKey,
|
||||
[out] uint32 *TagId,
|
||||
[in] [string,charset(UTF16)] uint16 *dependencies,
|
||||
[in] [string,charset(UTF16)] uint16 *service_start_name,
|
||||
[in] [string,charset(UTF16)] uint16 *password);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x19 */
|
||||
WERROR svcctl_EnumDependentServicesA([in,ref] policy_handle *service,
|
||||
[in] uint32 state,
|
||||
[out] ENUM_SERVICE_STATUS *status,
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed,
|
||||
[out] uint32 services_returned);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x1a */
|
||||
WERROR svcctl_EnumServicesStatusA(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 type,
|
||||
[in] uint32 state,
|
||||
[in] uint32 buf_size,
|
||||
[out,size_is(buf_size)] uint8 service[*],
|
||||
[out] uint32 bytes_needed,
|
||||
[out] uint32 services_returned,
|
||||
[in,out] uint32 *resume_handle
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x1b */
|
||||
WERROR svcctl_OpenSCManagerA(
|
||||
[in] [string,charset(UTF16)] uint16 *MachineName,
|
||||
[in] [string,charset(UTF16)] uint16 *DatabaseName,
|
||||
[in] uint32 access_mask,
|
||||
[out,ref] policy_handle *handle);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x1c */
|
||||
WERROR svcctl_OpenServiceA([in,ref] policy_handle *scmanager_handle,
|
||||
[in] [string,charset(UTF16)] uint16 *ServiceName,
|
||||
[in] uint32 access_mask);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x1d */
|
||||
WERROR svcctl_QueryServiceConfigA([in,ref] policy_handle *handle,
|
||||
[out] uint8 query[buf_size], /*QUERYU_SERVICE_CONFIG */
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x1e */
|
||||
WERROR svcctl_QueryServiceLockStatusA(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 buf_size,
|
||||
[out,ref] SERVICE_LOCK_STATUS *status,
|
||||
[out,ref] uint32 *required_buf_size
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x1f */
|
||||
WERROR svcctl_StartServiceA(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 NumArgs,
|
||||
[in,length_is(NumArgs)] [string,charset(UTF16)] uint16 *Arguments);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x20 */
|
||||
WERROR svcctl_GetServiceDisplayNameA([in,ref] policy_handle *handle,
|
||||
[in] [string,charset(UTF16)] uint16 *service_name,
|
||||
[out] [string,charset(UTF16)] uint16 *display_name,
|
||||
[in,out] uint32 *display_name_length);
|
||||
/*****************/
|
||||
/* Function 0x21 */
|
||||
WERROR svcctl_GetServiceKeyNameA([in,ref] policy_handle *handle,
|
||||
[in] [string,charset(UTF16)] uint16 *service_name,
|
||||
[out] [string,charset(UTF16)] uint16 *key_name,
|
||||
[in,out] uint32 *display_name_length);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x22 */
|
||||
WERROR svcctl_GetCurrentGroupeStateW();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x23 */
|
||||
WERROR svcctl_EnumServiceGroupW();
|
||||
|
||||
/*****************/
|
||||
/* Function 0x24 */
|
||||
WERROR svcctl_ChangeServiceConfig2A([in,ref] policy_handle *handle,
|
||||
[in] uint32 info_level,
|
||||
[in] uint8 *info
|
||||
);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x25 */
|
||||
WERROR svcctl_ChangeServiceConfig2W([in,ref] policy_handle *handle,
|
||||
[in] uint32 info_level,
|
||||
[in] uint8 *info);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x26 */
|
||||
WERROR svcctl_QueryServiceConfig2A(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 info_level,
|
||||
[out] uint8 buffer[buf_size],
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x27 */
|
||||
WERROR svcctl_QueryServiceConfig2W(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 info_level,
|
||||
[out] uint8 buffer[buf_size],
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x28 */
|
||||
WERROR svcctl_QueryServiceStatusEx(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 info_level,
|
||||
[out] uint8 buffer[buf_size],
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x29 */
|
||||
WERROR EnumServicesStatusExA(
|
||||
[in,ref] policy_handle *scmanager,
|
||||
[in] uint32 info_level,
|
||||
[in] uint32 type,
|
||||
[in] uint32 state,
|
||||
[out] uint8 services[buf_size],
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed,
|
||||
[out] uint32 service_returned,
|
||||
[in,out] uint32 *resume_handle,
|
||||
[out] [string,charset(UTF16)] uint16 *group_name);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x2a */
|
||||
WERROR EnumServicesStatusExW(
|
||||
[in,ref] policy_handle *scmanager,
|
||||
[in] uint32 info_level,
|
||||
[in] uint32 type,
|
||||
[in] uint32 state,
|
||||
[out] uint8 services[buf_size],
|
||||
[in] uint32 buf_size,
|
||||
[out] uint32 bytes_needed,
|
||||
[out] uint32 service_returned,
|
||||
[in,out] uint32 *resume_handle,
|
||||
[out] [string,charset(UTF16)] uint16 *group_name);
|
||||
|
||||
/*****************/
|
||||
/* Function 0x2b */
|
||||
WERROR svcctl_SCSendTSMessage();
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
distributed key tracking services
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("300f3532-38cc-11d0-a3f0-0020af6b0add"),
|
||||
version(1.2),
|
||||
pointer_default(unique),
|
||||
helpstring("Distributed Key Tracking Service")
|
||||
]
|
||||
interface trkwks
|
||||
{
|
||||
|
||||
/*****************/
|
||||
/* Function 0x00 */
|
||||
WERROR trkwks_Unknown0();
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "idl_types.h"
|
||||
/*
|
||||
Unixinfo interface definition
|
||||
*/
|
||||
|
||||
import "security.idl";
|
||||
|
||||
[ uuid("9c54e310-a955-4885-bd31-78787147dfa6"),
|
||||
version(0.0),
|
||||
endpoint("ncacn_np:[\\pipe\\unixinfo]", "ncacn_ip_tcp:", "ncalrpc:"),
|
||||
pointer_default(unique),
|
||||
helpstring("Unixinfo specific stuff")
|
||||
] interface unixinfo
|
||||
{
|
||||
/******************/
|
||||
/* Function: 0x00 */
|
||||
NTSTATUS unixinfo_SidToUid (
|
||||
[in] dom_sid sid,
|
||||
[out] hyper *uid
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x01 */
|
||||
NTSTATUS unixinfo_UidToSid (
|
||||
[in] hyper uid,
|
||||
[out] dom_sid *sid
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x02 */
|
||||
NTSTATUS unixinfo_SidToGid (
|
||||
[in] dom_sid sid,
|
||||
[out] hyper *gid
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x03 */
|
||||
NTSTATUS unixinfo_GidToSid (
|
||||
[in] hyper gid,
|
||||
[out] dom_sid *sid
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
NTSTATUS status;
|
||||
utf8string homedir;
|
||||
utf8string shell;
|
||||
} unixinfo_GetPWUidInfo;
|
||||
|
||||
/******************/
|
||||
/* Function: 0x04 */
|
||||
NTSTATUS unixinfo_GetPWUid (
|
||||
[in,out,ref,range(0,1023)] uint32 *count,
|
||||
[in,size_is(*count)] hyper uids[],
|
||||
[out,size_is(*count)] unixinfo_GetPWUidInfo infos[*]
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
w32time interface definitions
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("8fb6d884-2388-11d0-8c35-00c04fda2795"),
|
||||
endpoint("ncacn_np:[\\pipe\\srvsvc]","ncacn_np:[\\pipe\\atsvc]","ncacn_np:[\\pipe\\browser]","ncacn_np:[\\pipe\\keysvc]","ncacn_np:[\\pipe\\wkssvc]"),
|
||||
version(4.1),
|
||||
pointer_default(unique),
|
||||
helpstring("Win32 Time Server")
|
||||
]
|
||||
interface w32time
|
||||
{
|
||||
|
||||
/*****************/
|
||||
/* Function 0x00 */
|
||||
WERROR w32time_SyncTime();
|
||||
|
||||
WERROR w32time_GetNetLogonServiceBits();
|
||||
WERROR w32time_QueryProviderStatus();
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
winbind IRPC interface
|
||||
*/
|
||||
|
||||
#include "idl_types.h"
|
||||
|
||||
import "netlogon.idl";
|
||||
|
||||
[
|
||||
uuid("245f3e6b-3c5d-6e21-3a2d-2a3d645b7221"),
|
||||
version(1.0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface winbind
|
||||
{
|
||||
declare [switch_type(uint16)] union netr_LogonLevel;
|
||||
declare [switch_type(uint16)] union netr_Validation;
|
||||
|
||||
/* a call to get runtime informations */
|
||||
void winbind_information(/* TODO */);
|
||||
|
||||
/*
|
||||
* a call to trigger some internal events,
|
||||
* for use in torture tests...
|
||||
*/
|
||||
NTSTATUS winbind_remote_control(/* TODO */);
|
||||
|
||||
/*
|
||||
* do a netr_LogonSamLogon() against the right DC
|
||||
*/
|
||||
NTSTATUS winbind_SamLogon(
|
||||
[in] uint16 logon_level,
|
||||
[in] [switch_is(logon_level)] netr_LogonLevel logon,
|
||||
[in] uint16 validation_level,
|
||||
[out] [switch_is(validation_level)] netr_Validation validation,
|
||||
[out] uint8 authoritative,
|
||||
[in,out] uint32 flags
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
IMPORT security_secinfo offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_winreg_winreg_GetKeySecurity_sec_info, NULL);
|
||||
|
||||
HF_FIELD hf_winreg_access_required "Access Required" "winreg.access_required" FT_UINT32 BASE_HEX NULL 0 "" "" ""
|
||||
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCR_access_required hf_winreg_access_required
|
||||
HF_RENAME hf_winreg_winreg_OpenHKLM_access_required hf_winreg_access_required
|
||||
HF_RENAME hf_winreg_winreg_OpenHKU_access_required hf_winreg_access_required
|
||||
HF_RENAME hf_winreg_winreg_CreateKey_access_required hf_winreg_access_required
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCC_access_required hf_winreg_access_required
|
||||
HF_RENAME hf_winreg_winreg_OpenHKDD_access_required hf_winreg_access_required
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPT_access_required hf_winreg_access_required
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPN_access_required hf_winreg_access_required
|
||||
|
||||
HF_FIELD hf_winreg_system_name "System Name" "winreg.system_name" FT_UINT16 BASE_DEC NULL 0 "" "" ""
|
||||
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCR_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCU_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKLM_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPD_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKU_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCC_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKDD_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPT_system_name hf_winreg_system_name
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPN_system_name hf_winreg_system_name
|
||||
|
||||
HF_FIELD hf_winreg_handle "Handle" "winreg.handle" FT_BYTES BASE_NONE NULL 0 "" "" ""
|
||||
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCR_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCU_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKLM_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPD_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKU_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_CloseKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_CreateKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_DeleteKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_DeleteValue_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_EnumKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_EnumValue_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_FlushKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_GetKeySecurity_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_LoadKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_NotifyChangeKeyValue_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_QueryInfoKey_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_QueryValue_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_SetKeySecurity_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_SetValue_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_GetVersion_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKCC_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKDD_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPT_handle hf_winreg_handle
|
||||
HF_RENAME hf_winreg_winreg_OpenHKPN_handle hf_winreg_handle
|
||||
@@ -0,0 +1,365 @@
|
||||
/*
|
||||
winreg interface definition
|
||||
*/
|
||||
|
||||
import "lsa.idl", "initshutdown.idl", "security.idl";
|
||||
|
||||
[
|
||||
uuid("338cd001-2244-31f1-aaaa-900038001003"),
|
||||
version(1.0),
|
||||
endpoint("ncacn_np:[\\pipe\\winreg]","ncacn_ip_tcp:","ncalrpc:"),
|
||||
pointer_default(unique),
|
||||
pointer_default_top(unique),
|
||||
helpstring("Remote Registry Service")
|
||||
] interface winreg
|
||||
{
|
||||
declare bitmap security_secinfo;
|
||||
|
||||
typedef [bitmap32bit] bitmap {
|
||||
} winreg_AccessMask;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
REG_NONE = 0,
|
||||
REG_SZ = 1,
|
||||
REG_EXPAND_SZ = 2,
|
||||
REG_BINARY = 3,
|
||||
REG_DWORD = 4,
|
||||
REG_DWORD_BIG_ENDIAN = 5,
|
||||
REG_LINK = 6,
|
||||
REG_MULTI_SZ = 7,
|
||||
REG_RESOURCE_LIST = 8,
|
||||
REG_FULL_RESOURCE_DESCRIPTOR = 9,
|
||||
REG_RESOURCE_REQUIREMENTS_LIST = 10,
|
||||
REG_QWORD = 11
|
||||
} winreg_Type;
|
||||
|
||||
typedef [public,noejs] struct {
|
||||
[value(strlen_m_term(name)*2)] uint16 name_len;
|
||||
[value(strlen_m_term(name)*2)] uint16 name_size;
|
||||
[string,charset(UTF16)] uint16 *name;
|
||||
} winreg_String;
|
||||
|
||||
/******************/
|
||||
/* Function: 0x00 */
|
||||
WERROR winreg_OpenHKCR(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x01 */
|
||||
WERROR winreg_OpenHKCU(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x02 */
|
||||
WERROR winreg_OpenHKLM(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x03 */
|
||||
WERROR winreg_OpenHKPD(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x04 */
|
||||
WERROR winreg_OpenHKU(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x05 */
|
||||
WERROR winreg_CloseKey(
|
||||
[in,out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x06 */
|
||||
|
||||
typedef struct {
|
||||
[size_is(size),length_is(len)] uint8 *data;
|
||||
uint32 size;
|
||||
uint32 len;
|
||||
} KeySecurityData;
|
||||
|
||||
typedef struct {
|
||||
uint32 length;
|
||||
KeySecurityData sd;
|
||||
boolean8 inherit;
|
||||
} winreg_SecBuf;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
REG_ACTION_NONE = 0, /* used by caller */
|
||||
REG_CREATED_NEW_KEY = 1,
|
||||
REG_OPENED_EXISTING_KEY = 2
|
||||
} winreg_CreateAction;
|
||||
|
||||
WERROR winreg_CreateKey(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_String name,
|
||||
[in] winreg_String keyclass,
|
||||
[in] uint32 options,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[in,unique] winreg_SecBuf *secdesc,
|
||||
[out,ref] policy_handle *new_handle,
|
||||
[in,out,unique] winreg_CreateAction *action_taken
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x07 */
|
||||
WERROR winreg_DeleteKey(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_String key
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x08 */
|
||||
WERROR winreg_DeleteValue(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_String value
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
[value(strlen_m_term(name)*2)] uint16 length;
|
||||
/* size cannot be auto-set by value() as it is the
|
||||
amount of space the server is allowed to use for this
|
||||
string in the reply, not its current size */
|
||||
uint16 size;
|
||||
[size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
|
||||
} winreg_StringBuf;
|
||||
|
||||
WERROR winreg_EnumKey(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 enum_index,
|
||||
[in,out,ref] winreg_StringBuf *name,
|
||||
[in,out,unique] winreg_StringBuf *keyclass,
|
||||
[in,out,unique] NTTIME *last_changed_time
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0a */
|
||||
|
||||
WERROR winreg_EnumValue(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint32 enum_index,
|
||||
[in,out,ref] winreg_StringBuf *name,
|
||||
[in,out,unique] winreg_Type *type,
|
||||
[in,out,unique,size_is(*size),length_is(*length)] uint8 *value,
|
||||
[in,out,unique] uint32 *size,
|
||||
[in,out,unique] uint32 *length
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0b */
|
||||
WERROR winreg_FlushKey(
|
||||
[in,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0c */
|
||||
WERROR winreg_GetKeySecurity(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] security_secinfo sec_info,
|
||||
[in,out,ref] KeySecurityData *sd
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0d */
|
||||
WERROR winreg_LoadKey(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_String *keyname,
|
||||
[in] winreg_String *filename
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0e */
|
||||
WERROR winreg_NotifyChangeKeyValue(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] uint8 watch_subtree,
|
||||
[in] uint32 notify_filter,
|
||||
[in] uint32 unknown,
|
||||
[in] winreg_String string1,
|
||||
[in] winreg_String string2,
|
||||
[in] uint32 unknown2
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x0f */
|
||||
WERROR winreg_OpenKey(
|
||||
[in,ref] policy_handle *parent_handle,
|
||||
[in] winreg_String keyname,
|
||||
[in] uint32 unknown,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x10 */
|
||||
WERROR winreg_QueryInfoKey(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_String class_in,
|
||||
[out,unique] winreg_String *class_out,
|
||||
[out,ref] uint32 *num_subkeys,
|
||||
[out,ref] uint32 *max_subkeylen,
|
||||
[out,ref] uint32 *max_subkeysize,
|
||||
[out,ref] uint32 *num_values,
|
||||
[out,ref] uint32 *max_valnamelen,
|
||||
[out,ref] uint32 *max_valbufsize,
|
||||
[out,ref] uint32 *secdescsize,
|
||||
[out,ref] NTTIME *last_changed_time
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x11 */
|
||||
WERROR winreg_QueryValue(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_String value_name,
|
||||
[in,out] winreg_Type *type,
|
||||
[in,out,size_is(*size),length_is(*length)] uint8 *data,
|
||||
[in,out] uint32 *size,
|
||||
[in,out] uint32 *length
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x12 */
|
||||
WERROR winreg_ReplaceKey(
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x13 */
|
||||
WERROR winreg_RestoreKey(
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x14 */
|
||||
WERROR winreg_SaveKey(
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x15 */
|
||||
WERROR winreg_SetKeySecurity(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[in,out,ref] KeySecurityData *sd
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x16 */
|
||||
WERROR winreg_SetValue(
|
||||
[in,ref] policy_handle *handle,
|
||||
[in] winreg_String name,
|
||||
[in] winreg_Type type,
|
||||
[in,size_is(size),ref] uint8 *data,
|
||||
[in] uint32 size
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x17 */
|
||||
WERROR winreg_UnLoadKey(
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x18 */
|
||||
WERROR winreg_InitiateSystemShutdown(
|
||||
[in] uint16 *hostname,
|
||||
[in] initshutdown_String *message,
|
||||
[in] uint32 timeout,
|
||||
[in] uint8 force_apps,
|
||||
[in] uint8 reboot
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x19 */
|
||||
WERROR winreg_AbortSystemShutdown(
|
||||
[in] uint16 *server
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x1a */
|
||||
WERROR winreg_GetVersion(
|
||||
[in,ref] policy_handle *handle,
|
||||
[out,ref] uint32 *version
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x1b */
|
||||
WERROR winreg_OpenHKCC(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x1c */
|
||||
WERROR winreg_OpenHKDD(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
winreg_String *name;
|
||||
winreg_Type type;
|
||||
uint32 offset;
|
||||
uint32 length;
|
||||
} QueryMultipleValue;
|
||||
|
||||
/******************/
|
||||
/* Function: 0x1d */
|
||||
WERROR winreg_QueryMultipleValues(
|
||||
[in,ref] policy_handle *key_handle,
|
||||
[in,out,ref,size_is(num_values),length_is(num_values)] QueryMultipleValue *values,
|
||||
[in] uint32 num_values,
|
||||
[in,out,size_is(*buffer_size),length_is(*buffer_size)] uint8 *buffer,
|
||||
[in,out,ref] uint32 *buffer_size
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x1e */
|
||||
WERROR winreg_InitiateSystemShutdownEx(
|
||||
[in] uint16 *hostname,
|
||||
[in] initshutdown_String *message,
|
||||
[in] uint32 timeout,
|
||||
[in] uint8 force_apps,
|
||||
[in] uint8 reboot,
|
||||
[in] uint32 reason
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x1f */
|
||||
WERROR winreg_SaveKeyEx(
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x20 */
|
||||
WERROR winreg_OpenHKPT(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x21 */
|
||||
WERROR winreg_OpenHKPN(
|
||||
[in] uint16 *system_name,
|
||||
[in] winreg_AccessMask access_mask,
|
||||
[out,ref] policy_handle *handle
|
||||
);
|
||||
|
||||
/******************/
|
||||
/* Function: 0x22 */
|
||||
WERROR winreg_QueryMultipleValues2(
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
[
|
||||
uuid("45f52c28-7f9f-101a-b52b-08002b2efabe"),
|
||||
version(1.0),
|
||||
helpstring("Server-to-Server WINS")
|
||||
] interface WinsPipe
|
||||
{
|
||||
void WinsRecordAction();
|
||||
void WinsStatus();
|
||||
void WinsTrigger();
|
||||
void WinsDoStaticInit();
|
||||
void WinsDoScavenging();
|
||||
void WinsGetDbRecs();
|
||||
void WinsTerm();
|
||||
void WinsBackup();
|
||||
void WinsDelDbRecs();
|
||||
void WinsPullRange();
|
||||
void WinsSetPriorityClass();
|
||||
void WinsResetCounters();
|
||||
void WinsWorkerThreadUpdate();
|
||||
void WinsGetNameAndAdd();
|
||||
void WinsGetBrowserNames_Old();
|
||||
void WinsDeleteWins();
|
||||
void WinsSetFlags();
|
||||
void WinsGetDbRecsByName();
|
||||
void WinsStatusWHdl();
|
||||
void WinsDoScanvenging2();
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
IDL structures for WINS replication protocol (port 42)
|
||||
|
||||
Note that WINS replication is not traditionally encoded using
|
||||
IDL/NDR
|
||||
|
||||
Written by Andrew Tridgell <tridge@osdl.org>
|
||||
*/
|
||||
|
||||
import "nbt.idl";
|
||||
|
||||
interface wrepl
|
||||
{
|
||||
const int WINS_REPLICATION_PORT = 42;
|
||||
|
||||
typedef [flag(NDR_BIG_ENDIAN)] struct {
|
||||
ipv4address owner;
|
||||
ipv4address ip;
|
||||
} wrepl_ip;
|
||||
|
||||
typedef [flag(NDR_LITTLE_ENDIAN)] struct {
|
||||
uint32 num_ips;
|
||||
wrepl_ip ips[num_ips];
|
||||
} wrepl_address_list;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(0)] ipv4address ip;
|
||||
[case(2)] wrepl_address_list addresses;
|
||||
} wrepl_addresses;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
WREPL_TYPE_UNIQUE = 0x0,
|
||||
WREPL_TYPE_GROUP = 0x1,
|
||||
WREPL_TYPE_SGROUP = 0x2,
|
||||
WREPL_TYPE_MHOMED = 0x3
|
||||
} wrepl_name_type;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
WREPL_STATE_ACTIVE = 0x0,
|
||||
WREPL_STATE_RELEASED = 0x1,
|
||||
WREPL_STATE_TOMBSTONE = 0x2,
|
||||
WREPL_STATE_RESERVED = 0x3
|
||||
} wrepl_name_state;
|
||||
|
||||
typedef [enum8bit] enum {
|
||||
WREPL_NODE_B = 0x0,
|
||||
WREPL_NODE_P = 0x1,
|
||||
WREPL_NODE_M = 0x2,
|
||||
WREPL_NODE_H = 0x3
|
||||
} wrepl_name_node;
|
||||
|
||||
typedef [bitmap32bit] bitmap {
|
||||
WREPL_FLAGS_RECORD_TYPE = 0x00000003,
|
||||
WREPL_FLAGS_RECORD_STATE = 0x0000000C,
|
||||
WREPL_FLAGS_REGISTERED_LOCAL = 0x00000010,
|
||||
WREPL_FLAGS_NODE_TYPE = 0x00000060,
|
||||
WREPL_FLAGS_IS_STATIC = 0x00000080
|
||||
} wrepl_flags;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
WREPL_GROUP_FLAG_NO_GROUP = 0x00000000,
|
||||
WREPL_GROUP_FLAG_IS_GROUP = 0x00000001
|
||||
} wrepl_group_flag;
|
||||
|
||||
#define WREPL_IS_GROUP(flags) (\
|
||||
((((flags) & WREPL_FLAGS_RECORD_TYPE) == WREPL_TYPE_GROUP)|| \
|
||||
(((flags) & WREPL_FLAGS_RECORD_TYPE) == WREPL_TYPE_SGROUP))\
|
||||
? WREPL_GROUP_FLAG_IS_GROUP : WREPL_GROUP_FLAG_NO_GROUP)
|
||||
|
||||
typedef struct {
|
||||
wrepl_nbt_name name;
|
||||
wrepl_flags flags;
|
||||
[flag(NDR_LITTLE_ENDIAN),value(WREPL_IS_GROUP(flags))] wrepl_group_flag is_group;
|
||||
udlongr id;
|
||||
[switch_is(flags & 2)] wrepl_addresses addresses;
|
||||
ipv4address unknown;
|
||||
} wrepl_wins_name;
|
||||
|
||||
typedef struct {
|
||||
uint32 num_names;
|
||||
wrepl_wins_name names[num_names];
|
||||
} wrepl_send_reply;
|
||||
|
||||
typedef struct {
|
||||
ipv4address address;
|
||||
udlongr max_version;
|
||||
udlongr min_version;
|
||||
uint32 type;
|
||||
} wrepl_wins_owner;
|
||||
|
||||
typedef struct {
|
||||
uint32 partner_count;
|
||||
wrepl_wins_owner partners[partner_count];
|
||||
ipv4address initiator;
|
||||
} wrepl_table;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
WREPL_REPL_TABLE_QUERY = 0,
|
||||
WREPL_REPL_TABLE_REPLY = 1,
|
||||
WREPL_REPL_SEND_REQUEST = 2,
|
||||
WREPL_REPL_SEND_REPLY = 3,
|
||||
WREPL_REPL_UPDATE = 4,
|
||||
WREPL_REPL_UPDATE2 = 5,
|
||||
WREPL_REPL_INFORM = 8,
|
||||
WREPL_REPL_INFORM2 = 9
|
||||
} wrepl_replication_cmd;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(WREPL_REPL_TABLE_QUERY)] ;
|
||||
[case(WREPL_REPL_TABLE_REPLY)] wrepl_table table;
|
||||
[case(WREPL_REPL_SEND_REQUEST)] wrepl_wins_owner owner;
|
||||
[case(WREPL_REPL_SEND_REPLY)] wrepl_send_reply reply;
|
||||
[case(WREPL_REPL_UPDATE)] wrepl_table table;
|
||||
[case(WREPL_REPL_UPDATE2)] wrepl_table table;
|
||||
[case(WREPL_REPL_INFORM)] wrepl_table table;
|
||||
[case(WREPL_REPL_INFORM2)] wrepl_table table;
|
||||
} wrepl_replication_info;
|
||||
|
||||
typedef struct {
|
||||
wrepl_replication_cmd command;
|
||||
[switch_is(command)] wrepl_replication_info info;
|
||||
} wrepl_replication;
|
||||
|
||||
typedef struct {
|
||||
uint32 assoc_ctx;
|
||||
uint16 minor_version;
|
||||
uint16 major_version;
|
||||
} wrepl_start;
|
||||
|
||||
typedef struct {
|
||||
uint32 reason;
|
||||
} wrepl_stop;
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
WREPL_START_ASSOCIATION = 0,
|
||||
WREPL_START_ASSOCIATION_REPLY = 1,
|
||||
WREPL_STOP_ASSOCIATION = 2,
|
||||
WREPL_REPLICATION = 3
|
||||
} wrepl_mess_type;
|
||||
|
||||
typedef [nodiscriminant] union {
|
||||
[case(WREPL_START_ASSOCIATION)] wrepl_start start;
|
||||
[case(WREPL_START_ASSOCIATION_REPLY)] wrepl_start start_reply;
|
||||
[case(WREPL_STOP_ASSOCIATION)] wrepl_stop stop;
|
||||
[case(WREPL_REPLICATION)] wrepl_replication replication;
|
||||
} wrepl_message;
|
||||
|
||||
/*
|
||||
the opcode appears to be a bitfield, but as far as I can tell
|
||||
you must always set the following bits. Additional bits don't
|
||||
seem to matter. Very strange.
|
||||
*/
|
||||
const int WREPL_OPCODE_BITS = 0x7800;
|
||||
|
||||
|
||||
typedef [gensize,flag(NDR_BIG_ENDIAN|NDR_PAHEX),public] struct {
|
||||
uint32 opcode;
|
||||
uint32 assoc_ctx;
|
||||
wrepl_mess_type mess_type;
|
||||
[switch_is(mess_type)] wrepl_message message;
|
||||
[flag(NDR_REMAINING)] DATA_BLOB padding;
|
||||
} wrepl_packet;
|
||||
|
||||
typedef [flag(NDR_BIG_ENDIAN|NDR_PAHEX),public] struct {
|
||||
[value(ndr_size_wrepl_packet(&packet, ndr->flags))] uint32 size;
|
||||
wrepl_packet packet;
|
||||
} wrepl_wrap;
|
||||
|
||||
void decode_winsrepl(
|
||||
[in] wrepl_wrap p
|
||||
);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
winstation interface definition
|
||||
*/
|
||||
|
||||
#include "idl_types.h"
|
||||
|
||||
[ uuid("5ca4a760-ebb1-11cf-8611-00a0245420ed"),
|
||||
version(1.0),
|
||||
helpstring("Terminal Services remote management")
|
||||
] interface winstation
|
||||
{
|
||||
void winstation_foo();
|
||||
}
|
||||
@@ -0,0 +1,394 @@
|
||||
/*
|
||||
wkssvc interface definitions
|
||||
*/
|
||||
|
||||
import "srvsvc.idl";
|
||||
|
||||
[ uuid("6bffd098-a112-3610-9833-46c3f87e345a"),
|
||||
version(1.0),
|
||||
pointer_default(unique),
|
||||
pointer_default_top(unique),
|
||||
helpstring("Workstation Service")
|
||||
] interface wkssvc
|
||||
{
|
||||
declare [v1_enum] enum srvsvc_PlatformId;
|
||||
|
||||
#define BOOL uint32
|
||||
|
||||
/******************/
|
||||
/* Function: 0x00 */
|
||||
|
||||
typedef struct {
|
||||
srvsvc_PlatformId platform_id;
|
||||
[string,charset(UTF16)] uint16 *server_name;
|
||||
[string,charset(UTF16)] uint16 *domain_name;
|
||||
uint32 version_major;
|
||||
uint32 version_minor;
|
||||
} wkssvc_NetWkstaInfo100;
|
||||
|
||||
typedef struct {
|
||||
srvsvc_PlatformId platform_id;
|
||||
[string,charset(UTF16)] uint16 *server_name;
|
||||
[string,charset(UTF16)] uint16 *domain_name;
|
||||
uint32 version_major;
|
||||
uint32 version_minor;
|
||||
[string,charset(UTF16)] uint16 *lan_root;
|
||||
} wkssvc_NetWkstaInfo101;
|
||||
|
||||
typedef struct {
|
||||
srvsvc_PlatformId platform_id;
|
||||
[string,charset(UTF16)] uint16 *server_name;
|
||||
[string,charset(UTF16)] uint16 *domain_name;
|
||||
uint32 version_major;
|
||||
uint32 version_minor;
|
||||
[string,charset(UTF16)] uint16 *lan_root;
|
||||
uint32 logged_on_users;
|
||||
} wkssvc_NetWkstaInfo102;
|
||||
|
||||
typedef struct {
|
||||
uint32 char_wait;
|
||||
uint32 collection_time;
|
||||
uint32 maximum_collection_count;
|
||||
uint32 keep_connection;
|
||||
uint32 max_commands;
|
||||
uint32 session_timeout;
|
||||
uint32 size_char_buf;
|
||||
uint32 max_threads;
|
||||
uint32 lock_quota;
|
||||
uint32 lock_increment;
|
||||
uint32 lock_maximum;
|
||||
uint32 pipe_increment;
|
||||
uint32 pipe_maximum;
|
||||
uint32 cache_file_timeout;
|
||||
uint32 dormant_file_limit;
|
||||
uint32 read_ahead_throughput;
|
||||
uint32 num_mailslot_buffers;
|
||||
uint32 num_srv_announce_buffers;
|
||||
uint32 max_illegal_dgram_events;
|
||||
uint32 dgram_event_reset_freq;
|
||||
BOOL log_election_packets;
|
||||
BOOL use_opportunistic_locking;
|
||||
BOOL use_unlock_behind;
|
||||
BOOL use_close_behind;
|
||||
BOOL buf_named_pipes;
|
||||
BOOL use_lock_read_unlock;
|
||||
BOOL utilize_nt_caching;
|
||||
BOOL use_raw_read;
|
||||
BOOL use_raw_write;
|
||||
BOOL use_write_raw_data;
|
||||
BOOL use_encryption;
|
||||
BOOL buf_files_deny_write;
|
||||
BOOL buf_read_only_files;
|
||||
BOOL force_core_create_mode;
|
||||
BOOL use_512_byte_max_transfer;
|
||||
} wkssvc_NetWkstaInfo502;
|
||||
|
||||
typedef struct {
|
||||
uint32 char_wait;
|
||||
} wkssvc_NetWkstaInfo1010;
|
||||
|
||||
typedef struct {
|
||||
uint32 collection_time;
|
||||
} wkssvc_NetWkstaInfo1011;
|
||||
|
||||
typedef struct {
|
||||
uint32 maximum_collection_count;
|
||||
} wkssvc_NetWkstaInfo1012;
|
||||
|
||||
typedef struct {
|
||||
uint32 keep_connection;
|
||||
} wkssvc_NetWkstaInfo1013;
|
||||
|
||||
typedef struct {
|
||||
uint32 session_timeout;
|
||||
} wkssvc_NetWkstaInfo1018;
|
||||
|
||||
typedef struct {
|
||||
uint32 size_char_buf;
|
||||
} wkssvc_NetWkstaInfo1023;
|
||||
|
||||
typedef struct {
|
||||
uint32 errorlog_sz;
|
||||
} wkssvc_NetWkstaInfo1027;
|
||||
|
||||
typedef struct {
|
||||
uint32 max_threads;
|
||||
} wkssvc_NetWkstaInfo1033;
|
||||
|
||||
typedef union {
|
||||
[case(100)] wkssvc_NetWkstaInfo100 *info100;
|
||||
[case(101)] wkssvc_NetWkstaInfo101 *info101;
|
||||
[case(102)] wkssvc_NetWkstaInfo102 *info102;
|
||||
[case(502)] wkssvc_NetWkstaInfo502 *info502;
|
||||
[case(1010)] wkssvc_NetWkstaInfo1010 *info1010;
|
||||
[case(1011)] wkssvc_NetWkstaInfo1011 *info1011;
|
||||
[case(1012)] wkssvc_NetWkstaInfo1012 *info1012;
|
||||
[case(1013)] wkssvc_NetWkstaInfo1013 *info1013;
|
||||
[case(1018)] wkssvc_NetWkstaInfo1018 *info1018;
|
||||
[case(1023)] wkssvc_NetWkstaInfo1023 *info1023;
|
||||
[case(1027)] wkssvc_NetWkstaInfo1027 *info1027;
|
||||
[case(1033)] wkssvc_NetWkstaInfo1033 *info1033;
|
||||
[default] ;
|
||||
} wkssvc_NetWkstaInfo;
|
||||
|
||||
WERROR wkssvc_NetWkstaGetInfo(
|
||||
[in] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] uint32 level,
|
||||
[out,switch_is(level),ref] wkssvc_NetWkstaInfo *info
|
||||
);
|
||||
|
||||
|
||||
/******************/
|
||||
/* Function: 0x01 */
|
||||
WERROR wkssvc_NetWkstaSetInfo(
|
||||
[in] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] uint32 level,
|
||||
[in,switch_is(level),ref] wkssvc_NetWkstaInfo *info,
|
||||
[in,out,ref] uint32 *parm_error
|
||||
);
|
||||
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x02 */
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *user;
|
||||
} USER_INFO_0;
|
||||
|
||||
typedef struct {
|
||||
uint32 entries_read;
|
||||
[size_is(entries_read)] USER_INFO_0 *user0;
|
||||
} USER_INFO_0_CONTAINER;
|
||||
|
||||
typedef struct {
|
||||
[string,charset(UTF16)] uint16 *user_name;
|
||||
[string,charset(UTF16)] uint16 *logon_domain;
|
||||
[string,charset(UTF16)] uint16 *other_domains;
|
||||
[string,charset(UTF16)] uint16 *logon_server;
|
||||
} USER_INFO_1;
|
||||
|
||||
typedef struct {
|
||||
uint32 entries_read;
|
||||
[size_is(entries_read)] USER_INFO_1 *user1;
|
||||
} USER_INFO_1_CONTAINER;
|
||||
|
||||
typedef [switch_type(uint32)] union {
|
||||
[case(0)] USER_INFO_0_CONTAINER *user0;
|
||||
[case(1)] USER_INFO_1_CONTAINER *user1;
|
||||
} WKS_USER_ENUM_UNION;
|
||||
|
||||
WERROR wkssvc_NetWkstaEnumUsers(
|
||||
[in] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] uint32 level,
|
||||
[in] [out] [ref] WKS_USER_ENUM_UNION *users,
|
||||
[in] uint32 prefmaxlen,
|
||||
[out] uint32 *entriesread,
|
||||
[out] uint32 *totalentries,
|
||||
[in] [out] [ref] uint32 *resumehandle
|
||||
);
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x03 */
|
||||
WERROR WKSSVC_NETRWKSTAUSERGETINFO ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x04 */
|
||||
WERROR WKSSVC_NETRWKSTAUSERSETINFO ();
|
||||
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x05 */
|
||||
|
||||
typedef struct {
|
||||
uint32 quality_of_service;
|
||||
uint32 vc_count;
|
||||
[string,charset(UTF16)] uint16 *name;
|
||||
[string,charset(UTF16)] uint16 *address;
|
||||
uint32 wan_link;
|
||||
} wkssvc_NetWkstaTransportInfo0;
|
||||
|
||||
typedef struct {
|
||||
uint32 count;
|
||||
[size_is(count)] wkssvc_NetWkstaTransportInfo0 *array;
|
||||
} wkssvc_NetWkstaTransportCtr0;
|
||||
|
||||
typedef union {
|
||||
[case(0)] wkssvc_NetWkstaTransportCtr0 *ctr0;
|
||||
[default] ;
|
||||
} wkssvc_NetWkstaTransportCtr;
|
||||
|
||||
WERROR wkssvc_NetWkstaTransportEnum (
|
||||
[in] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in,out] uint32 level,
|
||||
[in,out,switch_is(level),ref] wkssvc_NetWkstaTransportCtr *ctr,
|
||||
[in] uint32 max_buffer,
|
||||
[out] uint32 totalentries,
|
||||
[in,out] uint32 *resume_handle
|
||||
);
|
||||
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x06 */
|
||||
WERROR WKSSVC_NETRWKSTATRANSPORTADD ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x07 */
|
||||
WERROR WKSSVC_NETRWKSTATRANSPORTDEL ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x08 */
|
||||
WERROR WKSSVC_NETRUSEADD ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x09 */
|
||||
WERROR WKSSVC_NETRUSEGETINFO ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x0a */
|
||||
WERROR WKSSVC_NETRUSEDEL ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x0b */
|
||||
WERROR WKSSVC_NETRUSEENUM ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x0c */
|
||||
WERROR WKSSVC_NETRMESSAGEBUFFERSEND ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x0d */
|
||||
WERROR WKSSVC_NETRWORKSTATIONSTATISTICSGET ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x0e */
|
||||
WERROR WKSSVC_NETRLOGONDOMAINNAMEADD ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x0f */
|
||||
WERROR WKSSVC_NETRLOGONDOMAINNAMEDEL ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x10 */
|
||||
WERROR WKSSVC_NETRJOINDOMAIN ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x11 */
|
||||
WERROR WKSSVC_NETRUNJOINDOMAIN ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x12 */
|
||||
WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x13 */
|
||||
WERROR WKSSVC_NETRVALIDATENAME ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x14 */
|
||||
WERROR WKSSVC_NETRGETJOININFORMATION ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x15 */
|
||||
WERROR WKSSVC_NETRGETJOINABLEOUS ();
|
||||
|
||||
typedef struct {
|
||||
uint8 data[524];
|
||||
} wkssvc_PasswordBuffer;
|
||||
|
||||
typedef [bitmap32bit] bitmap {
|
||||
/* TRUE: defer setting the SPN and dNSHostName until a rename operation */
|
||||
WKSSVC_JOIN_FLAGS_DEFER_SPN = 0x00000100,
|
||||
|
||||
/* TRUE: set the machine password to the provided one after the join completes */
|
||||
WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED = 0x00000080,
|
||||
|
||||
/* TRUE: perform an unsecured join */
|
||||
WKSSVC_JOIN_FLAGS_JOIN_UNSECURE = 0x00000040,
|
||||
|
||||
/* TRUE: allow the join to complete even if the account already exists */
|
||||
WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
|
||||
|
||||
/* TRUE: this join is part of a w9x upgrade */
|
||||
WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE = 0x00000010,
|
||||
|
||||
/* TRUE: delete the account when the domain is left */
|
||||
WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE = 0x00000004,
|
||||
|
||||
/* TRUE: create the account in the domain */
|
||||
WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002,
|
||||
|
||||
/* TRUE: join domain FALSE: join workgroup */
|
||||
WKSSVC_JOIN_FLAGS_JOIN_TYPE = 0x00000001
|
||||
|
||||
} wkssvc_joinflags;
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x16 */
|
||||
WERROR wkssvc_NetrJoinDomain2 (
|
||||
[in] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] [string,charset(UTF16),ref] uint16 *domain_name,
|
||||
[in] [string,charset(UTF16)] uint16 *account_name,
|
||||
[in] [string,charset(UTF16)] uint16 *admin_account,
|
||||
[in] wkssvc_PasswordBuffer *encrypted_password,
|
||||
[in] wkssvc_joinflags join_flags
|
||||
);
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x17 */
|
||||
WERROR wkssvc_NetrUnjoinDomain2 (
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *account,
|
||||
[in] [unique] wkssvc_PasswordBuffer *encrypted_password,
|
||||
[in] wkssvc_joinflags unjoin_flags
|
||||
);
|
||||
|
||||
typedef [bitmap32bit] bitmap {
|
||||
/* TRUE: create the account in the domain */
|
||||
WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE = 0x00000002
|
||||
} wkssvc_renameflags;
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x18 */
|
||||
WERROR wkssvc_NetrRenameMachineInDomain2(
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *NewMachineName,
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *Account,
|
||||
[in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
|
||||
[in] wkssvc_renameflags RenameOptions
|
||||
);
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x19 */
|
||||
WERROR WKSSVC_NETRVALIDATENAME2 ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x1a */
|
||||
WERROR WKSSVC_NETRGETJOINABLEOUS2 ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x1b */
|
||||
WERROR wkssvc_NetrAddAlternateComputerName(
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *Account,
|
||||
[in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
|
||||
[in] uint32 Reserved
|
||||
);
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x1c */
|
||||
WERROR wkssvc_NetrRemoveAlternateComputerName(
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *server_name,
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
|
||||
[in] [unique] [string,charset(UTF16)] uint16 *Account,
|
||||
[in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
|
||||
[in] uint32 Reserved
|
||||
);
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x1d */
|
||||
WERROR WKSSVC_NETRSETPRIMARYCOMPUTERNAME ();
|
||||
|
||||
/*****************************/
|
||||
/* Function 0x1e */
|
||||
WERROR WKSSVC_NETRENUMERATECOMPUTERNAMES ();
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
wireless configuration service
|
||||
*/
|
||||
|
||||
[
|
||||
uuid("378e52b0-c0a9-11cf-822d-00aa0051e40f"),
|
||||
version(1.0),
|
||||
helpstring("Wireless Configuration Service")
|
||||
]
|
||||
interface wzcsvc
|
||||
{
|
||||
|
||||
void wzcsvc_EnumInterfaces();
|
||||
void wzcsvc_QueryInterface();
|
||||
void wzcsvc_SetInterface();
|
||||
void wzcsvc_RefreshInterface();
|
||||
void wzcsvc_QueryContext();
|
||||
void wzcsvc_SetContext();
|
||||
void wzcsvc_EapolUIResponse();
|
||||
void wzcsvc_EapolGetCustomAuthData();
|
||||
void wzcsvc_EapolSetCustomAuthData();
|
||||
void wzcsvc_EapolGetInterfaceParams();
|
||||
void wzcsvc_EapolSetInterfaceParams();
|
||||
void wzcsvc_EapolReAuthenticateInterface();
|
||||
void wzcsvc_EapolQueryInterfaceState();
|
||||
void wzcsvc_OpenWZCDbLogSession();
|
||||
void wzcsvc_CloseWZCDbLogSession();
|
||||
void wzcsvc_EnumWZCDbLogRecords();
|
||||
void wzcsvc_FlushWZCdbLog();
|
||||
void wzcsvc_GetWZCDbLogRecord();
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
#include "idl_types.h"
|
||||
|
||||
/*
|
||||
IDL structures for xattr file attributes
|
||||
|
||||
this has nothing to do with RPC, we are just using our NDR/IDL
|
||||
infrastructure as a convenient way to store linearised information
|
||||
about a file in a architecture independent manner
|
||||
*/
|
||||
|
||||
import "security.idl";
|
||||
|
||||
[
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface xattr
|
||||
{
|
||||
const char *XATTR_DOSATTRIB_NAME = "user.DosAttrib";
|
||||
const int XATTR_DOSATTRIB_ESTIMATED_SIZE = 64;
|
||||
|
||||
/* we store basic dos attributes in a DosAttrib xattr. By
|
||||
using a union we can cope with new version of this
|
||||
structure more easily */
|
||||
|
||||
typedef struct {
|
||||
uint32 attrib;
|
||||
uint32 ea_size;
|
||||
udlong size;
|
||||
udlong alloc_size;
|
||||
NTTIME create_time;
|
||||
NTTIME change_time;
|
||||
} xattr_DosInfo1;
|
||||
|
||||
const int XATTR_ATTRIB_FLAG_STICKY_WRITE_TIME = 0x1;
|
||||
|
||||
typedef struct {
|
||||
uint32 flags;
|
||||
uint32 attrib;
|
||||
uint32 ea_size;
|
||||
udlong size;
|
||||
udlong alloc_size;
|
||||
NTTIME create_time;
|
||||
NTTIME change_time;
|
||||
NTTIME write_time; /* only used when sticky write time is set */
|
||||
utf8string name;
|
||||
} xattr_DosInfo2;
|
||||
|
||||
typedef [switch_type(uint16)] union {
|
||||
[case(1)] xattr_DosInfo1 info1;
|
||||
[case(2)] xattr_DosInfo2 info2;
|
||||
} xattr_DosInfo;
|
||||
|
||||
typedef [public] struct {
|
||||
uint16 version;
|
||||
[switch_is(version)] xattr_DosInfo info;
|
||||
} xattr_DosAttrib;
|
||||
|
||||
|
||||
/* we store DOS style extended attributes in a DosEAs xattr */
|
||||
const char *XATTR_DOSEAS_NAME = "user.DosEAs";
|
||||
|
||||
typedef struct {
|
||||
utf8string name;
|
||||
DATA_BLOB value;
|
||||
} xattr_EA;
|
||||
|
||||
typedef [public] struct {
|
||||
uint16 num_eas;
|
||||
[size_is(num_eas)] xattr_EA *eas;
|
||||
} xattr_DosEAs;
|
||||
|
||||
/* we store stream information in this xattr structure. Then
|
||||
the streams themselves are stored in
|
||||
user.DosStream.STREAMNAME or in external files, according
|
||||
to the flags */
|
||||
const char *XATTR_DOSSTREAMS_NAME = "user.DosStreams";
|
||||
|
||||
const int XATTR_STREAM_FLAG_INTERNAL = 0x00000001;
|
||||
|
||||
/* stream data is stored in attributes with the given prefix */
|
||||
const char *XATTR_DOSSTREAM_PREFIX = "user.DosStream.";
|
||||
|
||||
const int XATTR_MAX_STREAM_SIZE = 0x4000;
|
||||
|
||||
typedef struct {
|
||||
uint32 flags;
|
||||
udlong size;
|
||||
udlong alloc_size;
|
||||
utf8string name;
|
||||
} xattr_DosStream;
|
||||
|
||||
typedef [public] struct {
|
||||
uint32 num_streams;
|
||||
[size_is(num_streams)] xattr_DosStream *streams;
|
||||
} xattr_DosStreams;
|
||||
|
||||
|
||||
/* we store the NT ACL a NTACL xattr. It is versioned so we
|
||||
can later add other acl attribs (such as posix acl mapping)
|
||||
|
||||
we put this xattr in the security namespace to ensure that
|
||||
only trusted users can write to the ACL
|
||||
*/
|
||||
const char *XATTR_NTACL_NAME = "security.NTACL";
|
||||
|
||||
typedef [switch_type(uint16)] union {
|
||||
[case(1)] security_descriptor *sd;
|
||||
} xattr_NTACL_Info;
|
||||
|
||||
typedef [public] struct {
|
||||
uint16 version;
|
||||
[switch_is(version)] xattr_NTACL_Info info;
|
||||
} xattr_NTACL;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user