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 |
---|---|
|
Gibt an, dass RpcServerInqCallAttributes das ServerPrincipalName-Element dieser Struktur auffüllen soll. |
|
Gibt an, dass RpcServerInqCallAttributes das ClientPrincipalName-Element dieser Struktur auffüllen soll. |
|
Gibt an, dass RpcServerInqCallAttributes das CallLocalAddress-Element dieser Struktur auffüllen soll. |
|
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 |
---|---|
|
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, 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) |