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 |
---|---|
|
Gibt an, dass RpcServerInqCallAttributes den ServerPrincipalName-Member dieser Struktur auffüllen soll. |
|
Gibt an, dass RpcServerInqCallAttributes den ClientPrincipalName-Member dieser Struktur auffüllen soll. |
|
Gibt an, dass RpcServerInqCallAttributes den CallLocalAddress-Member dieser Struktur auffüllen soll. |
|
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 |
---|---|
|
Der Aufruf wird ausgeführt. |
|
Der Anruf wurde abgebrochen. |
|
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) |