CF_OPERATION_PARAMETERS CompletionStatus behavior (cfapi)

Hi, I am looking through the Cloud Filters API and was wondering about the exact behavior of the AckData parameter. If I call CfExecute with AckData and the CompletionStatus is set to STATUS_UNSUCCESSFUL, are the Offset and Length fields still relevant? Will it acknowledge certain ranges as unsuccessful?
EDIT: I want to make this question a little more general. For any of the operation parameters, does a failure CompletionStatus mean that the rest of the fields are irrelevant? Like in the case of AckData as described above?
Also, I did some minimal testing on the CF_OPERATION_TYPE_TRANSFER_DATA parameter a while ago and found that it requires the buffer field to be valid and defined to at least something even if the CompletionStatus is STATUS_UNSUCCESSFUL. Does the buffer actually serve any purpose on a failed call? I'm trying to understand why it's required no matter what?
My question is specifically about the behavior of the CompletionStatus field and how they behave with the fields around them.
@oknick
No matter what the state of CompletionStatus is, the buffer field need to be valid. The CfExecute function is intended to be used by a sync provider to respond to various
callbacks
from the platform.I see that, but why? Is it being used at all? Does it actually make a difference if I use a 1-byte buffer just for the sake of reporting that it failed (by also setting the CompletionStatus to STATUS_UNSUCCESSFUL)?
And in the case of CF_OPERATION_TYPE_ACK_DATA, does a failure CompletionStatus along with defining the other fields have any meaning? Like will it acknowledge the range I specify as unsuccessful if I set it to a failed call?
Hi, I was just wondering if you were able to gather any information on my question above?
@oknick
Based on complexity of this issue, we need to do more research. And I'll consult the related engineer for helping on this issue. We will keep you informed if there's any update.
Also, another question. If I want to tell the platform that an operation failed, why would I specify a buffer? Isn't this considered a bug since I have to work around the API with an empty allocated buffer that serves absolutely no purpose? It should just ignore the buffer field if the
CompletionStatus
is set to an error.Sign in to comment