Freigeben über


RPC_CALL_ATTRIBUTES_V2_A-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_A {
  unsigned int              Version;
  unsigned long             Flags;
  unsigned long             ServerPrincipalNameBufferLength;
  unsigned char             *ServerPrincipalName;
  unsigned long             ClientPrincipalNameBufferLength;
  unsigned char             *ClientPrincipalName;
  unsigned long             AuthenticationLevel;
  unsigned long             AuthenticationService;
  BOOL                      NullSession;
  BOOL                      KernelModeCaller;
  unsigned long             ProtocolSequence;
  unsigned long             IsClientLocal;
  HANDLE                    ClientPID;
  unsigned long             CallStatus;
  RpcCallType               CallType;
  RPC_CALL_LOCAL_ADDRESS_V1 *CallLocalAddress;
  unsigned short            OpNum;
  UUID                      InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_A;

Member

Version

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

Flags

Bitmaskierte Flags, die angeben, welche Member 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 den ServerPrincipalName-Member dieser Struktur auffüllen soll.
RPC_QUERY_CLIENT_PRINCIPAL_NAME
Gibt an, dass RpcServerInqCallAttributes den ClientPrincipalName-Member dieser Struktur auffüllen soll.
RPC_QUERY_CALL_LOCAL_ADDRESS
Gibt an, dass RpcServerInqCallAttributes den CallLocalAddress-Member dieser Struktur auffüllen soll.
RPC_QUERY_CLIENT_PID
Gibt an, dass RpcServerInqCallAttributes den ClientPID-Member 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 bei der Rückgabe auf die tatsächlich verwendete Länge in Bytes festgelegt, einschließlich des abschließenden NULL-Zeichens . Siehe Hinweise.

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

Wenn das flag RPC_QUERY_SERVER_PRINCIPAL_NAME nicht angegeben wird, wird ServerPrincipalNameBufferLength ignoriert. Wenn ServerPrincipalNameBufferLength ungleich null und ServerPrincipalNamenull ist, wird ERROR_INVALID_PARAMETER zurückgegeben.

ServerPrincipalName

Zeiger auf den Serverprinzipalnamen, wenn er 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

Die 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 bei der Rückgabe auf die tatsächlich verwendete Länge in Bytes festgelegt, einschließlich des abschließenden NULL-Zeichens .

Wenn die Protokollsequenz das Abrufen eines Clientprinzipalnamens 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 flag RPC_QUERY_CLIENT_PRINCIPAL_NAME nicht angegeben ist, wird ClientPrincipalNameBufferLength ignoriert. Wenn ClientPrincipalNameBufferLength ungleich null und ClientPrincipalNamenull ist, wird ERROR_INVALID_PARAMETER zurückgegeben.

ClientPrincipalName

Zeiger auf den Clientprinzipalnamen, wenn er im Flags-Element 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 wurde möglicherweise von RPC geändert.

AuthenticationLevel

Authentifizierungsebene für den Anruf. Informationen zu von RPC unterstützten Authentifizierungsebenen 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, auf der der Aufruf erfolgt.

Hinweise

Die RPC_CALL_ATTRIBUTES-Struktur verwendet ein Versionsverwaltungsschema, 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 einer einfachen #define im Header identifiziert wird, neue Member hinzufügen, um neue Funktionen zu ermöglichen, die in zukünftige 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 aktuellste 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 (rpc.h einschließen)

Weitere Informationen

RpcServerInqCallAttributes