RPC_CALL_ATTRIBUTES_V2_W Struktur (rpcasync.h)

Die RPC_CALL_ATTRIBUTES_V2-Struktur stellt Parameter für die RpcServerInqCallAttributes-Funktion bereit. Version 2 gibt die Unterstützung für lokale Adressen und Clientprozess-IDs an.

Syntax

typedef struct tagRPC_CALL_ATTRIBUTES_V2_W {
  unsigned int              Version;
  unsigned long             Flags;
  unsigned long             ServerPrincipalNameBufferLength;
  unsigned short            *ServerPrincipalName;
  unsigned long             ClientPrincipalNameBufferLength;
  unsigned short            *ClientPrincipalName;
  unsigned long             AuthenticationLevel;
  unsigned long             AuthenticationService;
  BOOL                      NullSession;
  BOOL                      KernelModeCaller;
  unsigned long             ProtocolSequence;
  RpcCallClientLocality     IsClientLocal;
  HANDLE                    ClientPID;
  unsigned long             CallStatus;
  RpcCallType               CallType;
  RPC_CALL_LOCAL_ADDRESS_V1 *CallLocalAddress;
  unsigned short            OpNum;
  UUID                      InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_W;

Member

Version

Version der RPC_CALL_ATTRIBUTES-Struktur . Für diese Struktur muss dieser Wert auf 2 festgelegt werden.

Flags

Bitmaskenflags, die angeben, welche Elemente dieser Struktur durch den Aufruf von RpcServerInqCallAttributes aufgefüllt werden sollen, an den diese Struktur übergeben wurde.

Wert Bedeutung
RPC_QUERY_SERVER_PRINCIPAL_NAME
Gibt an, dass RpcServerInqCallAttributes das ServerPrincipalName-Element dieser Struktur auffüllen soll.
RPC_QUERY_CLIENT_PRINCIPAL_NAME
Gibt an, dass RpcServerInqCallAttributes das ClientPrincipalName-Element dieser Struktur auffüllen soll.
RPC_QUERY_CALL_LOCAL_ADDRESS
Gibt an, dass RpcServerInqCallAttributes das CallLocalAddress-Element dieser Struktur auffüllen soll.
RPC_QUERY_CLIENT_PID
Gibt an, dass RpcServerInqCallAttributes das ClientPID-Element dieser Struktur auffüllen soll. Dieses Flag wird nur für die ncalrpc-Protokollsequenz unterstützt.

ServerPrincipalNameBufferLength

Länge von ServerPrincipalName in Bytes. Wenn nicht ausreichend, ist ServerPrincipalName unverändert, und ServerPrincipalNameBufferLength gibt die erforderliche Pufferlänge an, einschließlich des beendenden NULL-Zeichens , und ERROR_MORE_DATA wird zurückgegeben. Wenn ServerPrincipalNameBufferLength länger als erforderlich ist, wird es bei der Rückgabe auf die tatsächliche Länge in Bytes festgelegt, einschließlich des beendenden NULL-Zeichens . Siehe Hinweise.

Wenn die Protokollsequenz das Abrufen eines Serverprinzipalsnamens nicht unterstützt, wird ServerPrincipalNameBufferLength bei der Rückgabe auf Null festgelegt, und der Puffer, der von ServerPrincipalName angezeigt wird, ist unverändert. Windows XP: Nur die ncacn_* -Gruppe von Protokollsequenzen unterstützt das Abrufen des Serverprinzipalsnamens.

Wenn das RPC_QUERY_SERVER_PRINCIPAL_NAME-Flag nicht angegeben wird, wird ServerPrincipalNameBufferLength ignoriert. Wenn ServerPrincipalNameBufferLength nonzero und ServerPrincipalNameNULL ist, wird ERROR_INVALID_PARAMETER zurückgegeben.

ServerPrincipalName

Zeiger auf den Serverprinzipalnamen, wenn in Flags angefordert und von der Protokollsequenz unterstützt wird. Bei einem anderen Rückgabewert als RPC_S_OK oder ERROR_MORE_DATA ist der Inhalt von ServerPrincipalName nicht definiert und wurde möglicherweise von RPC geändert.

ClientPrincipalNameBufferLength

Länge des Puffers, auf den clientPrincipalName in Bytes verweist. Wenn nicht ausreichend, ist ClientPrincipalName unverändert, und ClientPrincipalNameBufferLength gibt die erforderliche Pufferlänge an, einschließlich des beendenden NULL-Zeichens , und ERROR_MORE_DATA wird zurückgegeben. Wenn ClientPrincipalNameBufferLength länger als erforderlich ist, wird es bei der Rückgabe auf die tatsächlich verwendete Länge in Bytes festgelegt, einschließlich des beendenden NULL-Zeichens .

Wenn die Protokollsequenz das Abrufen eines Clientprinzipalsnamens nicht unterstützt, wird ClientPrincipalNameBufferLength bei der Rückgabe auf Null festgelegt, und der Puffer, auf den clientPrincipalName verweist, ist unverändert. Windows XP: Nur die ncalrpc-Protokollsequenz unterstützt das Abrufen des Clientprinzipalnamens.

Wenn das RPC_QUERY_CLIENT_PRINCIPAL_NAME-Flag nicht angegeben ist, wird ClientPrincipalNameBufferLength ignoriert. Wenn ClientPrincipalNameBufferLength nonzero und ClientPrincipalNameNULL ist, wird ERROR_INVALID_PARAMETER zurückgegeben.

ClientPrincipalName

Zeiger auf den Clientprinzipalnamen, wenn im Flags-Member angefordert und von der Protokollsequenz unterstützt wird. Bei einem anderen Rückgabewert als RPC_S_OK oder ERROR_MORE_DATA ist der Inhalt von ClientPrincipalName nicht definiert und kann von RPC geändert worden sein.

AuthenticationLevel

Authentifizierungsebene für den Anruf. Informationen zu von RPC unterstützten Authentifizierungsstufen finden Sie unter Konstanten auf Authentifizierungsebene .

AuthenticationService

Authentifizierungsdienst oder Sicherheitsanbieter, der zum Ausführen des Remoteprozeduraufrufs verwendet wird.

NullSession

Gibt an, ob eine Null-Sitzung verwendet wird. Null gibt an, dass der Aufruf nicht über eine Null-Sitzung kommt. jeder andere Wert gibt eine Null-Sitzung an.

KernelModeCaller

ProtocolSequence

Konstante, die die Protokollsequenz angibt, über die der Aufruf erfolgt ist.

IsClientLocal

RpcCallClientLocality-Enumerationswert , der die Lokalität des Clients angibt (lokal, remote oder unbekannt).

ClientPID

Handle, das die Prozess-ID des aufrufenden Clients enthält. Dieses Feld wird nur für die ncalrpc-Protokollsequenz unterstützt und nur aufgefüllt, wenn RPC_QUERY_CLIENT_PID im Flags-Parameter angegeben ist.

CallStatus

Bitfeld, das die status des RPC-Aufrufs angibt.

Wert Bedeutung
RPC_CALL_STATUS_IN_PROGRESS
0x01
Der Aufruf wird ausgeführt.
RPC_CALL_STATUS_CANCELLED
0x02
Der Anruf wurde abgebrochen.
RPC_CALL_STATUS_DISCONNECTED
0x03
Der Client wurde getrennt.

CallType

RpcCallType-Enumerationswert , der den Typ des RPC-Aufrufs angibt.

CallLocalAddress

Zeiger auf eine RPC_CALL_LOCAL_ADDRESS-Struktur , die Informationen zum Server über die lokale Adresse enthält, an der der Aufruf erfolgt ist.

Dieses Feld darf nicht NULL sein, wenn RPC_QUERY_CALL_LOCAL_ADDRESS in Flags angegeben ist. andernfalls wird RPC_S_INVALID_ARG zurückgegeben.

Wenn der von der Anwendung bereitgestellte Puffer nicht ausreicht, gibt RpcServerInqCallAttributes ERROR_MORE_DATA zurück.

OpNum

Der opnum-Wert, der dem Aufruf in der entsprechenden IDL-Datei zugeordnet ist.

InterfaceUuid

Die Schnittstellen-UUID, für die der Aufruf erfolgt.

Hinweise

Die RPC_CALL_ATTRIBUTES-Struktur verwendet ein Versionsschema, damit die RpcServerInqCallAttributes-Funktion neue Funktionen integrieren kann, ohne neue Funktionen mit Suffixbezeichnern einführen zu müssen. Beispielsweise kann eine zweite Version des RPC_CALL_ATTRIBUTES, die mit einem einfachen #define im Header gekennzeichnet ist, neue Member hinzufügen, um neue Funktionen zu ermöglichen, die in zukünftigen Versionen der RpcServerInqCallAttributes-Funktion integriert sind, ohne eine entsprechende alternative Funktion freigeben zu müssen.

Das Version-Element gibt die Version der RPC_CALL_ATTRIBUTES-Struktur (derzeit entweder RPC_CALL_ATTRIBUTES_V1 oder RPC_CALL_ATTRIBUTES_V2) an, die von der aufrufenden Anwendung verwendet wird. Diese Identifizierung ermöglicht es der RPC-Laufzeit, Abwärtskompatibilität für Anwendungen bereitzustellen, die nicht die aktuelle Version der Struktur verwenden.

Bis der Prozess beendet wird, identifiziert ClientPID diesen Prozess eindeutig auf dem Client. Wenn der Prozess beendet wird, kann die von ClientPID angegebene Prozess-ID von neuen Prozessen verwendet werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Kopfzeile rpcasync.h (include Rpc.h)

Weitere Informationen

RpcServerInqCallAttributes