LDAP_SERVER_QUOTA_CONTROL_OID control code
The LDAP_SERVER_QUOTA_CONTROL_OID control is used to pass the SID of a security principal, whose quota is being queried, to the server in a LDAP search operation. The LDAP search operation queries the constructed attributes ms-DS-Quota-Effective and ms-DS-Quota-Used specified below. The SID is passed as the "value" of the control as a binary value. The absence of this control in a search means that the SID of the user performing the search operation is to be used; that is, self-quota is queried.
PWCHAR ldctl_oid = LDAP_SERVER_QUOTA_CONTROL_OID;
struct berval ldctl_value;
BOOLEAN ldctl_iscritical;
Members
-
ldctl_oid
-
LDAP_SERVER_QUOTA_CONTROL_OID, which is defined as "1.2.840.113556.1.4.1852".
-
ldctl_value
-
Specifies a querySID OCTET string whose value is a BER-encoded sequence of parameters that specify the SID of the security principal whose quota is to be queried. In the berval structure, set bv_val to a pointer to the sequence that contains the SID of a security principal, and set bv_len to the length of the sequence. For more information, see the Remarks section.
-
ldctl_iscritical
-
Can be TRUE or FALSE depending on whether the SID results is critical to the application.
Remarks
If the value of the ldctl_value sequence argument is required to be created manually, the sequence data is formatted as follows:
Sequence {
querySID OCTET STRING
}
The following table lists the sequence fields.
Sequence data | Description |
---|---|
querySID |
An Octet String that specifies the SID of the security principal whose quota is to be queried. |
The following code example shows how to manually format the sequence data for the first call to an extended LDAP search function.
LDAPControl lControl;
BerElement *pber = NULL;
PBERVAL pldctrl_value = NULL;
int success = -1;
// Format and encode the SEQUENCE data in a BerElement.
pber = ber_alloc_t(LBER_USE_DER);
if(pber==NULL) return BER_ALLOC_FAILURE_CODE;
ber_printf(pber,"{o}",NULL,0);
// Transfer the encoded data into a BERVAL.
success = ber_flatten(pber,&pldctrl_value);
if(success == 0)
ber_free(pber,1);
else
{
printf("ber_flatten failed");
// Call an error routine.
}
// Copy the BERVAL data to the LDAPControl structure.
lControl.ldctl_oid = LDAP_SERVER_QUOTA_CONTROL_OID;
lControl.ldctl_iscritical = TRUE;
lControl.ldctl_value.bv_val = new char[pldctrl_value->bv_len];
memcpy(lControl.ldctl_value.bv_val,
pldctrl_value->bv_val, pldctrl_value->bv_len);
lControl.ldctl_value.bv_len = pldctrl_value->bv_len;
// Cleanup temporary berval.
ber_bvfree(pldctrl_value);
// The LDAPControl data is ready for use in ldap_search_ext()
// or another call.
Requirements
Minimum supported client |
Windows Vista |
Minimum supported server |
Windows Server 2008 |
Header |
|