You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.5 KiB
143 lines
3.5 KiB
|
|
/*++
|
|
|
|
Microsoft Windows NT RPC Name Service
|
|
Copyright (C) Microsoft Corporation, 1995 - 1999
|
|
|
|
Module Name:
|
|
|
|
locquery.h
|
|
|
|
Abstract:
|
|
|
|
This module contains definitions of data structures and constants used for
|
|
all mailslot broadcast activity.
|
|
|
|
Author:
|
|
|
|
Satish Thatte (SatishT) 08/16/95 Created all the code below except where
|
|
otherwise indicated.
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef __LOCATORQUERYDEF__
|
|
#define __LOCATORQUERYDEF__
|
|
|
|
#include <lmcons.h> // LAN Manager common definitions
|
|
|
|
#ifndef NTENV
|
|
typedef unsigned short UICHAR;
|
|
#endif
|
|
|
|
// The following are the formats for a query on the net with mailslots.
|
|
// These are mostly copied from the old locator and modified only when
|
|
// absolutely necessary to avoid pulling in lots of old code, and to
|
|
// avoid name clashes with the new code
|
|
|
|
typedef enum {
|
|
|
|
MailslotServerEntryType = 1,
|
|
MailslotGroupEntryType,
|
|
MailslotProfileEntryType,
|
|
MailslotAnyEntryType,
|
|
MailslotLastEntryType
|
|
|
|
} MAILSLOT_ENTRY_TYPE ;
|
|
|
|
typedef struct {
|
|
|
|
GUID id;
|
|
unsigned short major;
|
|
unsigned short minor;
|
|
|
|
} GUIDandVersion;
|
|
|
|
typedef struct {
|
|
|
|
RPC_SYNTAX_IDENTIFIER Interface; // inteface that we are looking for
|
|
GUID Object; // Object that we are interested in
|
|
WCHAR WkstaName[MAX_DOMAIN_NAME_LENGTH]; // buffer for machine name
|
|
WCHAR EntryName[MAX_ENTRY_NAME_LENGTH]; // buffer for entry name
|
|
|
|
} QueryPacket;
|
|
|
|
typedef struct { // format of the PS back on the net
|
|
WCHAR Domain[MAX_DOMAIN_NAME_LENGTH]; // buffer for domain name
|
|
char Buffer[NET_REPLY_BUFFER_SIZE];
|
|
} QueryReply;
|
|
|
|
typedef struct {
|
|
|
|
/* ENTRY_SERVER_ITEM part */
|
|
|
|
/* Steve seems to marshall TYPE_ENTRY_ITEM here but the numerical
|
|
value for LocalItemType happens to be the same as the value
|
|
for ServerEntryType so it works most of the time !! */
|
|
|
|
MAILSLOT_ENTRY_TYPE type;
|
|
|
|
/* the dummy fields correspond to stuff that gets marshalled
|
|
gratuitously bebause of code like Copy(&buffer,this,sizeof(*this)) */
|
|
|
|
DWORD dummy1[5]; // these were pointers in x86.
|
|
ULONG dummy2, dummy3; // these structs unfortunately gets sent on the wire
|
|
// Making it dwords for win64
|
|
|
|
RPC_SYNTAX_IDENTIFIER Interface;
|
|
RPC_SYNTAX_IDENTIFIER XferSyntax;
|
|
|
|
unsigned long BindingLength; /* wcslen + 1 */
|
|
|
|
DWORD dummy4; // no idea why [5], don't ask me, DWORD
|
|
|
|
/* ENTRY_KEY part */
|
|
|
|
unsigned long EntryNameLength; /* wcslen + 1 */
|
|
|
|
DWORD dummy5; // DWORD
|
|
|
|
} fixed_part_of_reply;
|
|
|
|
/* we aren't ready for the following yet */
|
|
|
|
typedef struct {
|
|
unsigned long MessageType;
|
|
unsigned long SenderOsType;
|
|
WCHAR RequesterName[UNCLEN+1];
|
|
} QUERYLOCATOR;
|
|
|
|
typedef QUERYLOCATOR * PQUERYLOCATOR;
|
|
|
|
typedef struct {
|
|
unsigned long MessageSenderType; // never used
|
|
unsigned long Hint;
|
|
unsigned long Uptime;
|
|
UICHAR SenderName[UNCLEN+1];
|
|
} QUERYLOCATORREPLY;
|
|
typedef QUERYLOCATORREPLY * PQUERYLOCATORREPLY;
|
|
|
|
|
|
|
|
|
|
/*
|
|
Some Manifests
|
|
*/
|
|
|
|
#define QUERY_MASTER_LOCATOR 0x01
|
|
#define QUERY_BOUND_LOCATOR 0x02 // never used
|
|
#define QUERY_DC_LOCATOR 0x04
|
|
#define QUERY_ANY_LOCATOR 0x08
|
|
|
|
#define OS_WIN31DOS 0x01
|
|
#define OS_WFW 0x02
|
|
#define OS_NTWKGRP 0x04
|
|
#define OS_NTDOMAIN 0x08
|
|
|
|
#define REPLY_MASTER_LOCATOR 0x01
|
|
#define REPLY_BOUND_LOCATOR 0x02 // never used
|
|
#define REPLY_DC_LOCATOR 0x04
|
|
#define REPLY_OTHER_LOCATOR 0x08
|
|
|
|
|
|
#endif
|